數據結構類,實現具有頭部,尾部和當前節點的單個鏈接列表。遇到方法問題,可以使用正確方向的微調。Java鏈接列表 - 添加方法
從分配,編寫方法:
加(項目)增加了在列表中的當前節點之後的項目(字符串),並將當前的指針指到新節點。
我嘗試:
我add方法似乎只當我將項目添加到列表中,而不是在兩端的工作。如果我用它來添加一些項目然後打印列表,那麼只有我添加的第一個項目會在列表中,而我的prepend和append方法已經測試得很好。
我的代碼有什麼明顯的問題嗎?我覺得我失去了一些明顯的東西。
所有:
public class LinkedList {
Node head = null; /* Head of the list */
Node tail = null; /* Tail of the list */
Node curr = null; /* Current node in the list */
public void prepend(String item) {
if (head == null) {
head = tail = new Node(item, null);
curr = head;
} else {
head = new Node(item, head);
curr = head;
}
}
public void append(String item) {
if (head == null) {
head = tail = new Node(item, null);
curr = tail;
} else {
tail.next = new Node(item, null);
tail = tail.next;
curr = tail;
}
}
public void add(String item) {
if (curr != null) {
Node newNode = new Node(item, curr.next);
curr.next = newNode;
curr = newNode;
} else {
head = tail = new Node(item, null);
curr = head;
}
}
public void delete() {
if (curr.next == null) {
Node temp = head;
while (temp.next != curr) {
System.out.println(temp.item);
temp = temp.next;
}
temp.next = null;
curr = head;
}
}
public void find(String item) {
Node temp = new Node(curr.item, curr.next);
if (item.equals(temp.item))
curr = temp;
else {
temp = temp.next;
while (temp.next != null && temp != curr) {
if (item.equals(temp.item))
curr = temp;
}
}
}
public String get() {
if (curr != null)
return curr.item;
else
return "";
}
public boolean next() {
if (curr != tail) {
curr = curr.next;
return true;
} else
return false;
}
public void start() {
curr = head;
}
public void end() {
curr = tail;
}
public boolean empty() {
if (head == null)
return true;
else
return false;
}
}
Node
類:
class Node {
Node next;
String item;
Node(String item, Node next) {
this.next = next;
this.item = item;
}
}
其他代碼呢? – fge 2012-01-16 19:47:04
該部分看起來不錯,所以向我們展示周圍的代碼,錯誤必須在那裏。 – 2012-01-16 19:57:33
增加了代碼的其餘部分 – dysania 2012-01-16 19:57:47