【发布时间】:2015-04-19 03:11:35
【问题描述】:
我一直试图弄清楚如何做到这一点,但我就是不知道我做错了什么。我需要做的是使用字符创建一个链接列表,并按字母顺序显示列表。
主程序:
public static void main(String[] args) {
String n = null;
char newChar = ' ';
KeyboardReader reader = new KeyboardReader();
Node start = null;
Node last = null;
Node temp = null;
do{
System.out.print("Enter a letter: ");
newChar = reader.readChar();
temp = new Node(newChar);
if (start == null)
start = temp;
if (last != null){
last.nodeptr = temp;
}
last = temp;
System.out.print("Linked list: ");
printList(start);
System.out.print("Would you like to enter another letter (y/n)? ");
n = reader.readLine();
addLine();
}while(n.compareTo("y") == 0);
System.out.println("The following will output a linked list created in alphabetical order.");
addLine();
start = null;
last = null;
temp = null;
do{
System.out.print("Enter a letter: ");
newChar = reader.readChar();
temp = new Node(newChar);
if(start == null){
start = temp;
last = temp;
}
//~~ CAUSING ISSUES ~~
//if(last != null)
//last.nodeptr = temp;
//insert before
if(temp.letter < start.letter){
temp.nodeptr = start;
start = temp;
}
//insert at middle or end
else{
if(last.letter < temp.letter){
last.nodeptr = temp;
temp = last;
}
if(last.letter > temp.letter){
temp.nodeptr = last;
last = temp;
}
}
//For testing purposes
/*else{
if(temp.letter > start.letter){
if(start.nodeptr != null){
while(temp.letter > start.nodeptr.letter){
temp.nodeptr = start;
start = temp;
}
}
}
else if(temp.letter < last.letter){
if(last.nodeptr != null){
while(temp.letter < last.nodeptr.letter){
last.nodeptr = temp;
last = temp;
}
}
}
}
*/
System.out.print("Linked list: ");
printList(start);
System.out.print("Would you like to enter another letter (y/n)? ");
n = reader.readLine();
addLine();
}while(n.compareTo("y") == 0);
}
当前输出(与注释掉的东西一样):
Enter a letter: m
Linked list: m
Would you like to enter another letter (y/n)? y
Enter a letter: o
Linked list: mo
Would you like to enter another letter (y/n)? y
Enter a letter: n
Linked list: mon
Would you like to enter another letter (y/n)? y
Enter a letter: e
Linked list: mone
Would you like to enter another letter (y/n)? y
Enter a letter: y
Linked list: money
Would you like to enter another letter (y/n)? n
The following will output a linked list created in alphabetical order.
Enter a letter: m
Linked list: m
Would you like to enter another letter (y/n)? y
Enter a letter: o
Linked list: mo
Would you like to enter another letter (y/n)? y
Enter a letter: n
Linked list: mn
Would you like to enter another letter (y/n)? n
我想出了程序的第一部分,它只是在用户输入每个字符时插入。但是,现在我必须按字母顺序排列它,我想我指出了我的问题,我认为这是由于 Last 节点。我在程序中将其注释掉并运行,但不正确。如果我不加注释,它会形成一个循环,基本上会破坏程序。
如果有人可以帮助我修复代码并使其 100% 正常工作,我们将不胜感激!
【问题讨论】:
标签: java linked-list character alphabetical