Welcome to the Java Programming Forums


The professional, friendly Java community. 21,500 members and growing!


The Java Programming Forums are a community of Java programmers from all around the World. Our members have a wide range of skills and they all have one thing in common: A passion to learn and code Java. We invite beginner Java programmers right through to Java professionals to post here and share your knowledge. Become a part of the community, help others, expand your knowledge of Java and enjoy talking with like minded people. Registration is quick and best of all free. We look forward to meeting you.


>> REGISTER NOW TO START POSTING


Members have full access to the forums. Advertisements are removed for registered users.

Results 1 to 5 of 5

Thread: Please help me figure out how to work with a linked list in a JFrame. Agh!

  1. #1
    Junior Member
    Join Date
    Feb 2012
    Posts
    10
    Thanks
    4
    Thanked 0 Times in 0 Posts

    Default Please help me figure out how to work with a linked list in a JFrame. Agh!

    Hi,

    I am posting this here as a last resort. I have been working on this absolutely all day long now and I just can't seem to get it right. I am writing a program that will display a list of the names of contacts (with each contact being an object of a Contact class containing fields for name, address, phone number, etc.), and allow the user to add contacts, remove contact, and select among them for editing. The contacts MUST be stored in a linked list using a node class (of my own design--not the Java.util one). The list on the screen should show the first and last name of the contact.

    The linked list thing is what is giving me problems. At first I was having trouble figuring out how to display the list items in the JFrame, since if I were to simply add the Contact objects to the list, what would be displayed would be their references. I couldn't figure out how to actually use the Contact objects in the linked list and have it display the name like I wanted it to.

    So, to get around that, I pulled the first and last name out of the Contact object with a getFirstAndLastName() method, and I used this String in the JList. However, this has left me with 2 separate things to maintain whenever I try to edit, add, or remove a contact, and I've actually reached a hurdle at this point because am having a problem with my edit functionality.

    If I had access to my Contact objects through the JList, editing one would be no big deal. But since I don't, what I have tried to do is just delete the old contact (by searching for it by its name, basically) and then add a whole new one with the edited data. But it isn't working. For some reason, a new contact and name in the list are created, but the old name (which is the same) remains.

    It's all just really convoluted. I would really appreciate some help!
    Last edited by BloomingNutria; May 11th, 2012 at 11:23 PM.


  2. #2
    Forum VIP
    Join Date
    Jul 2010
    Posts
    1,676
    Thanks
    25
    Thanked 329 Times in 305 Posts

    Default Re: Please help me figure out how to work with a linked list in a JFrame. Agh!

    At first I was having trouble figuring out how to display the list items in the JFrame, since if I were to simply add the Contact objects to the list, what would be displayed would be their references. I couldn't figure out how to actually use the Contact objects in the linked list and have it display the name like I wanted it to.
    You override the toString() method that Contact inherits from the Object class. For example:
    public String toString() {
         return firstName+" "+lastName;
    }

    You had it close with the getFirstAndLastName() method, but you should have instead just overwritten the toString method.

    That might solve all of your problems since you can then make it all just one list again.
    NOTE TO NEW PEOPLE LOOKING FOR HELP ON FORUM:

    When asking for help, please follow these guidelines to receive better and more prompt help:
    1. Put your code in Java Tags. To do this, put [highlight=java] before your code and [/highlight] after your code.
    2. Give full details of errors and provide us with as much information about the situation as possible.
    3. Give us an example of what the output should look like when done correctly.

    Join the Airline Management Simulation Game to manage your own airline against other users in a virtual recreation of the United States Airline Industry. For more details, visit: http://airlinegame.orgfree.com/

  3. #3
    Junior Member
    Join Date
    Feb 2012
    Posts
    10
    Thanks
    4
    Thanked 0 Times in 0 Posts

    Default Re: Please help me figure out how to work with a linked list in a JFrame. Agh!

    Ha! I think you're right! I can't see straight tonight anymore, but I still had to check this thread one more time before I went to bed. I'm going to try this first thing in the morning. I think it will fix everything. That's awesome.

  4. #4
    Junior Member
    Join Date
    Feb 2012
    Posts
    10
    Thanks
    4
    Thanked 0 Times in 0 Posts

    Default Re: Please help me figure out how to work with a linked list in a JFrame. Agh!

    Well, that did fix the immediate problem of getting the list working, but now it appears there are some underlying problems with the logic of my linked list, and I am having a hard time figuring out what is going on. I am hoping to sort of work through it here.

    I had difficulty figuring out how to implement a linked list using input from the GUI. I could do it if it were coming in from a scanner like this:

    public static void buildList()
        {
            Scanner input = new Scanner(System.in);
            String fn;
            String ln;
            String mi;
            String pn;
            String add;
            String bd;
     
            Node start, tail, next;
     
            start = null;
     
            System.out.println("For each contact, enter data as prompted.");
            System.out.println("Enter \"STOP\" in first name field to quit.");
     
            System.out.println("Enter first name: ");
            fn = input.nextLine();
     
            if (!fn.equalsIgnoreCase("STOP"))
            {
                System.out.println("Enter last name: ");
                ln = input.nextLine();
     
                System.out.println("Enter middle initial: ");
                mi = input.nextLine();
     
                System.out.println("Enter phone number: ");
                pn = input.nextLine();
     
                System.out.println("Enter address: ");
                add = input.nextLine();
     
                System.out.println("Enter birthday: ");
                bd = input.nextLine();
     
                start = new Node(new Contact(fn, ln, mi, pn, add, bd), null);
                tail = start;
     
                while (true)
                {
                    System.out.println("Enter first name: ");
                    fn = input.nextLine();
     
                    if (fn.equalsIgnoreCase("STOP"))
                    {
                        break;
                    }
     
                    System.out.println("Enter last name: ");
                    ln = input.nextLine();
     
                    System.out.println("Enter middle initial: ");
                    mi = input.nextLine();
     
                    System.out.println("Enter phone number: ");
                    pn = input.nextLine();
     
                    System.out.println("Enter address: ");
                    add = input.nextLine();
     
                    System.out.println("Enter birthday: ");
                    bd = input.nextLine();
     
                    next = new Node(new Contact(fn, ln, mi, pn, add, bd), null);
                    tail.setNext(next);
                    tail = next;
                }
            }    
        }

    However, when it is coming in from the GUI, I only ever get one contact instead of a chain of them, and I didn't immediately see how to build the list that way. What I did was put the front node of the list in the constructor and put a "dummy" contact in it (I did this so the value of front would not be null at certain times--I know it was a poor solution). As it happened, both the dummy's first and last name began with "S."

    So now to what happens. My code uses two sorting methods: one to sort the list of contacts alphabetically by first name, and one to sort by last name. When I try to use one of them from the JFrame, it will remove all the contacts in the JList whose capitalized names (either first or last, depending on which method) alphabetically precede the letter "S". (Lowercase names are fine because I have not ignored case in the comparison, so they all precede the capital "S.") This is clearly to do with my front Node containing the dummy contact (Sam Spade). I'm just having a difficult time figuring out exactly WHAT is happening.

    In order to test whether the contacts were being removed from the linked list or just the JList, I put a System.out.println instruction in one of the sort methods to see what remained in the linked list after the sort method ran. What happened is that even after the names vanish from the JList, they are still printed as though they are in the linked list. However, the set of names does not print once: it prints in its entirety 2n times, with n being the number of items I added to list list (not including Sam Spade).

    I know this is a lot of complicated information, but if anyone can help me figure it out, I'd be grateful.

    Here is my code:

    public class Contact
    {
        private String firstName;
        private String lastName;
        private String mi;
        private String phoneNumber;
        private String email;
        private String street;
        private String city;
        private String state;
        private String zip;
        private String birthday;
     
        public Contact()
        {
            this(null, null, null, null, null, null, null, null, null, null);
        }
     
        public Contact(String fn, String ln)
        {
            firstName = fn;
            lastName = ln;
        }    
     
        public Contact(String fn, String ln, String m, String pn, String em, String str, String cty, String st, String zp, String bd)
        {
            firstName = fn;
            lastName = ln;
            mi = m;
            phoneNumber = pn;
            email = em;
            street = str;
            city = cty;
            state = st;
            zip = zp;
            birthday = bd;
        }
     
        public String getFirstName()
        {
            return firstName;
        }
     
        public String getLastName()
        {
            return lastName;
        }
     
        public String getMi()
        {
            return mi;
        }
     
        public String getPhoneNumber()
        {
            return phoneNumber;
        }
     
        public String getEmail()
        {
            return email;
        }   
     
        public String getStreet()
        {
            return street;
        }    
     
        public String getCity()
        {
            return city;
        }    
     
        public String getState()
        {
            return state;
        }    
     
        public String getZip()
        {
            return zip;
        }    
     
        public String getBirthday()
        {
            return birthday;
        }
     
        public void setFirstName(String fn)
        {
            firstName = fn;
        }    
     
        public void seLastName(String ln)
        {
            lastName = ln;
        }   
     
        public void setMi(String m)
        {
            mi = m;
        }   
     
        public void setPhoneNumber(String pn)
        {
            phoneNumber = pn;
        }   
     
        public void setEmail(String em)
        {
            email = em;
        }    
     
        public void setBirthday(String bd)
        {
            birthday = bd;
        }
     
        public String toString()
        {
            return firstName + " " + lastName;
        }    
    }    //end class
     
    public class Node
    {
        private Contact contact;
        public Node next;
     
        public Node()
        {
            contact = null;
            next = null;
        }
     
        public Node(Contact c)
        {
            setContact(c);
            setNext(null);
        }
     
        public Contact getContact()
        {
            return contact;
        }
     
        public Node getNext()
        {
            return next;
        }
     
        public void setContact(Contact c)
        {
            contact = c;
        }
     
        public void setNext(Node node)
        {
            next = node;
        }
     
        public String toString()
        {
            return contact.toString();
        }    
    }        //end class
     
    import java.awt.*;
    import javax.swing.*;
    import java.awt.event.*;
     
     
    public class AddressBook2 
    {
        JFrame frame1, frame2;
     
        //frame1 variables
        private JButton addButton;          
        private JButton editButton;
        private JButton removeButton;
        private JButton sortFirstButton;
        private JButton sortLastButton;
        private JButton exitButton;
        private JList contactList;
        private DefaultListModel listModel;
     
        //frame2 variables
        private JTextField fnameField;
        private JTextField lnameField;
        private JTextField miField;
        private JTextField pnField;
        private JTextField stateField;
        private JTextField cityField;
        private JTextField streetField;
        private JTextField zipField;
        private JTextField bdField;
        private JTextField emailField;
     
        private JButton saveButton;
     
        Node front, q, r;
     
     
        public AddressBook2()
        {
            frame1 = new JFrame("My Contacts");
            frame2 = new JFrame("Contact");
     
            frame1.setBounds(0, 0, 450, 500);      
            frame2.setBounds(450, 0, 450, 500); 
     
            listModel = new DefaultListModel();    //Pass the listModel to the list, then manipulate the model instead of the list.
     
            JPanel frame1TopPanel = new JPanel();       //default is flowLayout
            JPanel frame1MiddlePanel = new JPanel(new GridLayout(0, 1));
            frame1MiddlePanel.setBorder(BorderFactory.createLineBorder(Color.GRAY, 2));    
            JPanel frame1BottomPanel = new JPanel(new FlowLayout());
     
            addButton = new JButton("Add");
            editButton = new JButton("Edit");
            removeButton = new JButton("Remove");
     
            //create and configure list
            contactList = new JList(listModel);
            contactList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
            contactList.setSelectedIndex(0);
            //contactList.addListSelectionListener(listListener);
            contactList.setVisibleRowCount(15);
            JScrollPane contactListScrollPane = new JScrollPane(contactList);
     
     
     
            //add buttons to frame1TopPanel
            frame1TopPanel.add(addButton);
            frame1TopPanel.add(editButton);
            frame1TopPanel.add(removeButton);
     
            //add list to middle panel
            frame1MiddlePanel.add(contactListScrollPane);
     
            //create bottom buttons and add them to frame1BottomPanel
            exitButton = new JButton("Exit");
            sortFirstButton = new JButton("Sort by First Name");
            sortLastButton = new JButton("Sort by Last Name");
            frame1BottomPanel.add(sortFirstButton);
            frame1BottomPanel.add(sortLastButton);
            frame1BottomPanel.add(exitButton);
     
            //Now the frame2 GUI
            JPanel frame2Panel = new JPanel();
            Font labelFont = new Font("Courier", Font.BOLD, 12);
     
            //make a label for each frame1 text field; add labels and text fields to frame2Panel.
            JLabel fnameLabel = new JLabel();
            fnameLabel.setFont(labelFont);
            fnameLabel.setText("    First Name:");
            fnameField = new JTextField(20);
            frame2Panel.add(fnameLabel);
            frame2Panel.add(fnameField);
     
            JLabel lnameLabel = new JLabel();
            lnameLabel.setFont(labelFont);
            lnameLabel.setText("     Last Name:");
            lnameField = new JTextField(20);
            frame2Panel.add(lnameLabel);
            frame2Panel.add(lnameField);
     
            JLabel miLabel = new JLabel();
            miLabel.setFont(labelFont);
            miLabel.setText("Middle Initial:");
            miField = new JTextField(20);
            frame2Panel.add(miLabel);
            frame2Panel.add(miField);
     
            JLabel pnLabel = new JLabel();
            pnLabel.setFont(labelFont);
            pnLabel.setText("  Phone Number:");
            pnField = new JTextField(20);
            frame2Panel.add(pnLabel);
            frame2Panel.add(pnField);
     
            JLabel emailLabel = new JLabel();
            emailLabel.setFont(labelFont);
            emailLabel.setText("         Email:");
            emailField = new JTextField(20);
            frame2Panel.add(emailLabel);
            frame2Panel.add(emailField);
     
            JLabel streetLabel = new JLabel();
            streetLabel.setFont(labelFont);
            streetLabel.setText("        Street:");
            streetField = new JTextField(20);
            frame2Panel.add(streetLabel);
            frame2Panel.add(streetField);
     
            JLabel cityLabel = new JLabel();
            cityLabel.setFont(labelFont);
            cityLabel.setText("          City:");
            cityField = new JTextField(20);
            frame2Panel.add(cityLabel);
            frame2Panel.add(cityField);
     
            JLabel stateLabel = new JLabel();
            stateLabel.setFont(labelFont);
            stateLabel.setText("         State:");
            stateField = new JTextField(20);
            frame2Panel.add(stateLabel);
            frame2Panel.add(stateField);
     
            JLabel zipLabel = new JLabel();
            zipLabel.setFont(labelFont);
            zipLabel.setText("           Zip:");
            zipField = new JTextField(20);
            frame2Panel.add(zipLabel);
            frame2Panel.add(zipField);
     
            JLabel bdLabel = new JLabel();
            bdLabel.setFont(labelFont);
            bdLabel.setText("      Birthday:");
            bdField = new JTextField(20);
            frame2Panel.add(bdLabel);
            frame2Panel.add(bdField);
     
            frame2.add(frame2Panel, BorderLayout.CENTER);
     
            //create the frame2 buttons, add them to a new panel, and place the panel on the frame
            saveButton = new JButton("Save");
            JPanel frame2ButtonPanel = new JPanel();
            frame2ButtonPanel.add(saveButton);
     
            //register a listener with each button
            addButton.addActionListener(new ButtonListener());          
            editButton.addActionListener(new ButtonListener());
            removeButton.addActionListener(new ButtonListener());
            sortFirstButton.addActionListener(new ButtonListener());
            sortLastButton.addActionListener(new ButtonListener());
            exitButton.addActionListener(new ButtonListener());
            saveButton.addActionListener(new ButtonListener());
     
     
     
     
     
            frame1.add(frame1TopPanel, BorderLayout.NORTH);
            frame1.add(frame1MiddlePanel, BorderLayout.CENTER);
            frame1.add(frame1BottomPanel, BorderLayout.SOUTH);
     
            frame1.setResizable(false);
            frame1.setVisible(true);
            frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     
            frame2.add(frame2Panel, BorderLayout.CENTER);
            frame2.add(frame2ButtonPanel, BorderLayout.SOUTH);
     
     
            frame2.setResizable(false);
            frame2.setVisible(false);
            frame2.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
     
            //node stuff--This is the bad part.
     
            Contact dummyContact;
            dummyContact = new Contact("Sam", "Spade");
            front = new Node(dummyContact); //If I don't do this my code will not work because front will be null, and then I can't loop through to edit/remove--need to figure it out
            listModel.addElement(front);
            q = front;  //both q and front now reference the first node, which has: data = null and next = null.
     
            //add contents of linked list to listModel
            Node s = front;
     
     
        }
     
        private class ButtonListener implements ActionListener
        {
            String firstName;
            String lastName;
            String mi;
            String phoneNumber;
            String email;
            String street;
            String city;
            String state;
            String zip;
            String birthday;
     
     
            public void actionPerformed(ActionEvent e)
            {
                if (e.getSource() == saveButton)
                {
                    firstName = fnameField.getText();
                    lastName = lnameField.getText();
                    mi = miField.getText();
                    phoneNumber = pnField.getText();
                    email = emailField.getText();
                    street = streetField.getText();
                    city = cityField.getText();
                    state = stateField.getText();
                    zip = zipField.getText();
                    birthday = bdField.getText();
     
                    Contact c = new Contact(firstName, lastName, mi, phoneNumber, email, street, city, state, zip, birthday);
     
                    r = new Node(c);
                    listModel.addElement(r);
                    q.next = r;
                    q = r;
     
                    frame2.setVisible(false);
                    addButton.setEnabled(true);
                    editButton.setEnabled(true);                
                    removeButton.setEnabled(true);
                    sortFirstButton.setEnabled(true);
                    sortLastButton.setEnabled(true);
                    saveButton.setEnabled(true);
     
                    //clear all frame2 fields for next use
                    fnameField.setText("");
                    lnameField.setText("");
                    miField.setText("");
                    pnField.setText("");
                    emailField.setText("");
                    streetField.setText("");
                    cityField.setText("");
                    stateField.setText("");
                    zipField.setText("");
                    bdField.setText("");
                }
                else if (e.getSource() == addButton)
                {
                    frame2.setVisible(true);
                    addButton.setEnabled(false);
                    editButton.setEnabled(false);
                    removeButton.setEnabled(false);
                    sortFirstButton.setEnabled(false);
                    sortLastButton.setEnabled(false);
                    saveButton.setEnabled(true);
                }
                else if (e.getSource() == editButton)
                {
                    frame2.setVisible(true);
                    addButton.setEnabled(false);
                    editButton.setEnabled(false);
                    removeButton.setEnabled(false);
                    sortFirstButton.setEnabled(false);
                    sortLastButton.setEnabled(false);
     
     
                    int index = contactList.getSelectedIndex();
                    Node p = (Node)listModel.getElementAt(index);
                    String name = p.toString();
     
     
                    fnameField.setText(p.getContact().getFirstName());
                    lnameField.setText(p.getContact().getLastName());
                    miField.setText(p.getContact().getMi());
                    pnField.setText(p.getContact().getPhoneNumber());
                    stateField.setText(p.getContact().getState());
                    cityField.setText(p.getContact().getCity());
                    streetField.setText(p.getContact().getStreet());
                    zipField.setText(p.getContact().getZip());
                    bdField.setText(p.getContact().getBirthday());
                    emailField.setText(p.getContact().getEmail());
     
     
                    Node d = front;
                    Node prev = null;
     
                    while (d != null && !name.equals(d.toString()))
                    {
                        prev = d;
                        d = d.getNext();
                    }  
     
     
                    if (d == front)
                    {
                       front = front.getNext();
                    }
                    else
                    {
                        prev.setNext(d.getNext());     //cut the old node out of chain
                    }
                    listModel.remove(index);    
                    //Now that the old contact is deleted, it should get replaced with the edited version when the "save" button is pressed.
                }       
                else if (e.getSource() == sortFirstButton)  //problems with this
                {
                    sortByFirst(front);
                    //now the list should be sorted. Clear JList of unsorted data (is there any way to make the listModel actually reflect the order of the data?). 
                    listModel.clear();
     
                    Node j = front;
     
                    while (j != null)
                    {
                        listModel.addElement(j);
                        j = j.getNext();
                    }    
     
                }   
                else if (e.getSource() == sortLastButton)   //this too
                {
                    sortByLast(front);
                    listModel.clear();
     
                    Node j = front;
     
                    while (j != null)
                    {
                        listModel.addElement(j);
                        j = j.getNext();
                    }
                } 
                else if (e.getSource() == removeButton)
                {
     
                    int index = contactList.getSelectedIndex();
                    Node p = (Node)listModel.getElementAt(index);
                    String name = p.toString();
     
                    Node d = front;
                    Node prev = null;
     
                    while (d != null && !name.equals(d.toString()))
                    {
                        prev = d;
                        d = d.getNext();
                    }  
     
                    if (d == front)
                    {
                       front = front.getNext();
                    }
                    else
                    {
                        prev.setNext(d.getNext());     //cut the old node out of chain
                    }
                    listModel.remove(index);    
                }    
                else if (e.getSource() == exitButton)
                {
                    System.exit(0);
                }    
            }       
        }    
     
        public static void main(String[] args)
        {
             AddressBook2 frames = new AddressBook2();
        }
     
        private static void sortByFirst(Node front)
        {
           //Enter loop only if there are elements in list
           boolean swapped = (front != null);
     
           // Only continue loop if a swap is made
           while (swapped)
           {
              swapped = false;
     
              // Maintain pointers
              Node curr = front;
              Node next = curr.getNext();
              Node prev = null;
     
              // Cannot swap last element with its next
              while (next != null)
              {
                 // swap if items in wrong order
              if (curr.getContact().getFirstName().compareTo(next.getContact().getFirstName()) > 0)
              {
                 // notify loop to do one more pass
                 swapped = true;
     
                 // swap elements (swapping head in special case
                 if (curr == front)
                 {
                    front = next;
                    Node temp = next.getNext();
                    next.setNext(curr);
                    curr.setNext(temp);
                    curr = front;
                 }
                 else
                 {
                    prev.setNext(curr.getNext());
                    curr.setNext(next.getNext());
                    next.setNext(curr);
                    curr = next;
                 }
              }
     
              // move to next element
              prev = curr;
              curr = curr.getNext();
              next = curr.getNext();
     
              //print the linked list to check elements
              Node p = front;
              while (p != null)
              {
                  System.out.println(p.getContact().toString());
                  p = p.getNext();
              }  
              System.out.println();
              }
           }
        }   
     
        private static void sortByLast(Node front)
        {
           //Enter loop only if there are elements in list
           boolean swapped = (front != null);
     
           // Only continue loop if a swap is made
           while (swapped)
           {
              swapped = false;
     
              // Maintain pointers
              Node curr = front;
              Node next = curr.getNext();
              Node prev = null;
     
              // Cannot swap last element with its next
              while (next != null)
              {
                 // swap if items in wrong order
              if (curr.getContact().getLastName().compareTo(next.getContact().getLastName()) > 0)
              {
                 // notify loop to do one more pass
                 swapped = true;
     
                 // swap elements (swapping head in special case
                 if (curr == front)
                 {
                    front = next;
                    Node temp = next.getNext();
                    next.setNext(curr);
                    curr.setNext(temp);
                    curr = front;
                 }
                 else
                 {
                    prev.setNext(curr.getNext());
                    curr.setNext(next.getNext());
                    next.setNext(curr);
                    curr = next;
                 }
              }
     
              // move to next element
              prev = curr;
              curr = curr.getNext();
              next = curr.getNext();
     
            }
           }
        }   
     
     
     
    }

    Incidentally, this is not homework. It used to be, but the class is over and it was already turned in. Thanks.
    Last edited by BloomingNutria; May 12th, 2012 at 01:13 PM.

  5. #5
    Junior Member
    Join Date
    Feb 2012
    Posts
    10
    Thanks
    4
    Thanked 0 Times in 0 Posts

    Default Re: Please help me figure out how to work with a linked list in a JFrame. Agh!

    By the way, those comments in there are just questions to myself. I didn't mean to leave them in the post. Thanks.

Similar Threads

  1. linked list
    By javasohard in forum What's Wrong With My Code?
    Replies: 1
    Last Post: October 18th, 2011, 02:22 AM
  2. Linked list Schminked list help with Nodes Please
    By Bially in forum Collections and Generics
    Replies: 1
    Last Post: September 29th, 2011, 03:20 PM
  3. Studying for a test, can't figure out my code won't work
    By coolidge in forum What's Wrong With My Code?
    Replies: 4
    Last Post: September 27th, 2011, 01:12 PM
  4. need to figure how this thing will work
    By frosst in forum What's Wrong With My Code?
    Replies: 5
    Last Post: May 26th, 2011, 01:45 AM
  5. Help with linked list
    By joecool594 in forum Collections and Generics
    Replies: 3
    Last Post: November 28th, 2010, 12:33 PM

Tags for this Thread