| | |
Linked List program - stumped w/ 1 problem
Please support our Java advertiser: Programming Forums - DaniWeb Sister Site
Thread Solved |
•
•
Join Date: Oct 2009
Posts: 21
Reputation:
Solved Threads: 0
Hello...
This is my last assignment from my Data Structures class.
I turned it in and got a good grade, but it still has one problem that I am unable to pinpoint.
The assignment is as follows:
Create an alphabetical linked list from a .txt file containing various names. (1 per line)
Allow the addition/deletion of particular names, and also be able to show the number of names beginning with certain letters, print sections of names between particular letters, etc.
The problem I'm having is this:
It won't let me delete particular names that were read into the linked list on the initial .txt file read in. However, it WILL let me delete names that were added manually after the initial .txt file read in. This is really puzzling me because they both use the same delete method.
Like I said, I already turned this assignment in, but I really want to know what the cause for this error is!!
*I have also attached names.txt, which is the file that the program should read in. (it prompts you asking for file name to read)
Any help is appreciated!!
Here is the code...
This is my last assignment from my Data Structures class.
I turned it in and got a good grade, but it still has one problem that I am unable to pinpoint.
The assignment is as follows:
Create an alphabetical linked list from a .txt file containing various names. (1 per line)
Allow the addition/deletion of particular names, and also be able to show the number of names beginning with certain letters, print sections of names between particular letters, etc.
The problem I'm having is this:
It won't let me delete particular names that were read into the linked list on the initial .txt file read in. However, it WILL let me delete names that were added manually after the initial .txt file read in. This is really puzzling me because they both use the same delete method.
Like I said, I already turned this assignment in, but I really want to know what the cause for this error is!!
*I have also attached names.txt, which is the file that the program should read in. (it prompts you asking for file name to read)
Any help is appreciated!!
Here is the code...
Java Syntax (Toggle Plain Text)
import java.util.Scanner; import java.io.*; public class linkedList { // MAIN METHOD -----------------------------------// public static void main(String[] args) { linkedList myLinkedList = new linkedList(); myLinkedList.displayList(); myLinkedList.insert("vinny"); myLinkedList.insert("darrell"); myLinkedList.insert("mcdowell"); myLinkedList.insert("zzz"); myLinkedList.displayList(); myLinkedList.printSection("abchijqsx"); System.out.println("The first link is " + myLinkedList.head.next.value + ". The tail link is " + myLinkedList.tail.value + "."); myLinkedList.delete("darrell"); myLinkedList.delete("vinny"); myLinkedList.delete("zzz"); }//-----------------------------------------------// DataInputStream in; String fname, line, alphabet = "abcdefghijklmnopqrstuvwxyz";; boolean looping, searching; int linkCount = 0; link head = new link(); link tail = new link(); link temp = new link(); link current = new link(); // link[] index = new link[26]; public linkedList() { System.out.println("...starting linkedList() method..."); getFileName(); readFileContents(); } public class link { public String value; // value of element public link next; // referene to next // constructor public link() { } public link(String val) { value = val; } public link(String val, link n) { value = val; next = n; } } /////////////////////////// PROMPT USER FOR .TXT FILE NAME /////////////////// public void getFileName() { Scanner in = new Scanner(System.in); System.out.println("What file do you want to turn into a linked list?"); fname = in.nextLine(); System.out.println("you entered: "+fname); } ////////////////////////////////////////////////////////////////////////////// ////// TRANSFER .TXT FILE'S CONTENTS INTO AN ALPHABETICALLY LINKED LIST ////// public void readFileContents() { System.out.println("...starting readFileContents() method..."); try { in = new DataInputStream(new FileInputStream(fname)); looping = true; while(looping) { if (null == (line = in.readLine())) { looping = false; in.close(); } else { insert(line); // call insert method }// end else }// end while }// end try catch(IOException e) { System.out.println("Error " + e); }// end catch }// end readFileContents() ////////////////////////////////////////////////////////////////////////////// //////////////////////////////////// ALPHABETICALLY INSERT A LINK INTO THE LIST /// public void insert(String line) { link newLink = new link(line, null); temp = head; current = head.next; if (linkCount == 0) { // create first link head.next = newLink; current = newLink; temp = head; tail = newLink; searching = false; } else if (linkCount > 0) { // create additional link & insert searching = true; while (searching) { int compare = line.compareTo(current.value); if (current.next == null) { if (compare > 0) { current.next = newLink; temp = current; current = newLink; tail = newLink; searching = false; } if (compare < 0) { temp.next = newLink; temp = newLink; newLink.next = current; tail = current; searching = false; } } else if (current.next != null) { if (compare > 0) { temp = current; current = current.next; } if (compare < 0) { temp.next = newLink; newLink.next = current; temp = newLink; searching = false; } } } } linkCount++; // increment linkCount System.out.println("'" + newLink.value + "' link was created and added to the list!"); System.out.println(" linkCount is now: " + linkCount); }//////////////////////////////////////////////////////////////////////// ///////////////////////////////// DELETE A PARTICULAR LINK ////////////// public void delete(String val) { current = head.next; temp = head; boolean looking = true; while (looking) { if (current.value == val) { temp.next = current.next; current = current.next; looking = false; } else if (current.value != val) { temp = current; current = current.next; } } linkCount--; // decrement linkCount System.out.println("'" + val + "' link was DELETED from the list!"); System.out.println(" linkCount is now: " + linkCount); }///////////////////////////////////////////////////////////////////////// ////////////////////////////// DISPLAY THE WHOLE LINKED LIST ///////////////////////////// public void displayList() { String listString = new String("\ndisplayList() of all " + linkCount + " links : "); current = head.next; while (current.next != null) { //concatenate link values into listString listString = listString + current.value + ", "; current = current.next; } listString = listString + current.value + "\n"; System.out.println(listString); //print listString } }///////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////// PRINT SPECIFIC SECTIONS OF THE LINKED LIST /// public void printSection(String section) { int sectionCount = 0; String sectionString = new String(); for (int i = 0; i < section.length(); i++) { current = head.next; boolean printing = true; while (printing) { if (current.value.charAt(0) != section.charAt(i) && current.next == null) { System.out.println("WARNING!!! NO STRING LINKS BEGINNING WITH '" + section.charAt(i) + "'!"); printing = false; } else if (current.value.charAt(0) == section.charAt(i)) { while (current.value.charAt(0) == section.charAt(i)) { //concatenate section values into sectionString sectionString = sectionString + current.value + ", "; sectionCount++; // increment sectionCount current = current.next; } printing = false; } else if (current.value.charAt(0) != section.charAt(i)) { current = current.next; } } if (current.next == null && current.value.charAt(0) == section.charAt(i)) { sectionString = sectionString + current.value; } } String output = new String("printSection(" + section + ") contains " + sectionCount + ": " + sectionString); System.out.println(output); // print sectionString }///////////////////////////////////////////////////////////////////////////////////////////////////////////////// }
•
•
Join Date: Nov 2008
Posts: 332
Reputation:
Solved Threads: 54
•
•
•
•
Comparing with the == Operator
•
•
•
•
The == operator works on String object references. If two String variables point to the same object in memory, the comparison returns a true result. Otherwise, the comparison returns false, regardless whether the text has the same character values. The == operator does not compare actual char data. Without this clarification, you might be surprised that the following code snippet prints The strings are unequal.
Java Syntax (Toggle Plain Text)
public void delete(String val) { current = head.next; temp = head; boolean looking = true; while (looking) { if (current.value.equals(val)) { System.out.println("compare using '.equals(...)' method: " + (current.value.equals(val))); System.out.println("compare using '.compareTo(...)' method: " + (current.value.compareTo(val))); System.out.println("compare using '==' operator: " + (current.value == val)); temp.next = current.next; current = current.next; looking = false; } else { temp = current; current = current.next; } } linkCount--; // decrement linkCount System.out.println("'" + val + "' link was DELETED from the list!"); System.out.println(" linkCount is now: " + linkCount); }
•
•
Join Date: Oct 2009
Posts: 21
Reputation:
Solved Threads: 0
0
#4 Oct 21st, 2009
Wow...it works. 
Thank you!
Although it works, I don't really grasp why exactly, considering that the delete() method works for links that are added additionally, but not for those that were initially read into the linked list from the .txt file.
I'm sure that your post explained the reason behind this, but I'm not grasping the big picture just yet.
I'll look at it for another few minutes and think about it.
Thanks for the help and for the extra print statements showing the difference between those compare methods. Your efforts are appreciated!

Thank you!
Although it works, I don't really grasp why exactly, considering that the delete() method works for links that are added additionally, but not for those that were initially read into the linked list from the .txt file.
I'm sure that your post explained the reason behind this, but I'm not grasping the big picture just yet.
I'll look at it for another few minutes and think about it.
Thanks for the help and for the extra print statements showing the difference between those compare methods. Your efforts are appreciated!
Last edited by nola_Coder; Oct 21st, 2009 at 1:10 am.
![]() |
Similar Threads
- Need of linked list program (C)
- Major Problem with Doubly linked list program (C++)
- Linked List with Char Array problem (C++)
- A little help with a linked list (C++)
- Linked List program HELP (C++)
- Linked List and Dynamic Array Problem (C++)
- Doubly Linked List Problem (C++)
- I need help with a linked list program (C++)
- printing a linked list (C++)
Other Threads in the Java Forum
- Previous Thread: Frequently Used Classes
- Next Thread: Help!!
| Thread Tools | Search this Thread |
Tag cloud for Java
affinetransform android api append apple applet application arguments array arrays automation bi binary bluetooth businessintelligence busy_handler(null) chat class classes client code component database desktop draw eclipse encryption equation error event exception fractal game givemetehcodez graphics gui html ide image input integer intersect j2me java javaprojects jmf jni jpanel julia linked linux list loop main map method methods mobile netbeans newbie number open-source oracle oriented panel print problem program programming project properties qt recursion reference replaysolutions repositories return robot scanner screen scrollbar se server set singleton size sms socket sort sql string swing test threads time tree utility windows xor xstream





