嗨,我对Java中的LinkedLists相当陌生,在将值插入到链表中时遇到了麻烦。该程序编译成功,我只能在链接列表中添加一些数字。如果有人解释为什么会发生这种情况以及解决该问题的解决方案,将会有所帮助。
class LNode {
int data;
LNode next;
public LNode(int data)
{
this.data=data;
}
}
class linkedList {
LNode head; // initialize head.
// methods
public void append(int data) {
if(head==null) {
head= new LNode(data);
return;
}
LNode temp = head;
while(temp.next!=null) {
temp=temp.next;
}
temp = new LNode(data);
}
public void prepend(int data) {
LNode temp=new LNode(data);
temp.next=head;
head=temp;
}
public void DelteValue(int data) {
if(head==null)
return;
if(head.data==data) {
head=head.next;
return;
}
LNode current=new LNode(data);
while(current.next!=null) {
if(current.next.data==data) {
current.next=current.next.next;
return;
}
current=current.next;
}
}
public void show() {
LNode temp= head;
while(temp.next!=null) {
System.out.println(temp.data);
temp=temp.next;
}
}
}
public class LinkedLists {
public static void main(String[] args) {
linkedList LL=new linkedList();
LL.append(5);
LL.append(15);
LL.append(25);
LL.prepend(1);
LL.prepend(12);
LL.prepend(22);
LL.show();
}
}
请看一下并发布解决方案(如果可能)? 多谢。
答案 0 :(得分:0)
您的append()
方法中的逻辑不正确。遍历到列表的末尾后,您需要在最后一个位置插入新节点:
public void append(int data) {
if (head == null) {
head = new LNode(data);
return;
}
LNode temp = head;
while (temp.next != null) {
temp = temp.next;
}
temp.next = new LNode(data);
}
您的prepend()
方法看起来不错。我没有测试您的删除方法,它也可能有问题。该答案直接解决了您上面的要求。
答案 1 :(得分:0)
它在您的append方法中
LNode temp = head;
while(temp.next!=null) {
temp=temp.next;
}
temp = new LNode(data);
while循环结束时,temp指向列表中的最后一个东西。但是随后您将其与下一行的作业一起丢弃。应该是
temp.next = new LNode(data);