Lớp cấu trúc dữ liệu, triển khai danh sách liên kết đơn lẻ với đầu, đuôi và các nút hiện tại. Có vấn đề với một phương pháp, có thể sử dụng một di chuyển đúng hướng.Danh sách liên kết Java - thêm phương thức
Từ sự phân công, hãy viết phương pháp:
add (item): thêm mục (String) sau khi nút hiện trong danh sách và đặt con trỏ hiện tại để tham khảo các nút mới.
nỗ lực của tôi:
add My phương pháp duy nhất dường như làm việc khi tôi thêm mục vào giữa danh sách, không phải trên hai đầu. Nếu tôi sử dụng nó để thêm một vài mục và sau đó in danh sách, chỉ có một mục đầu tiên tôi thêm vào sẽ có trong danh sách, trong khi các phương thức nối thêm và nối thêm của tôi đã thử nghiệm tốt.
Có sự cố rõ ràng nào với mã của tôi không? Tôi cảm thấy như tôi đang thiếu một cái gì đó hiển nhiên.
All:
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
lớp:
class Node {
Node next;
String item;
Node(String item, Node next) {
this.next = next;
this.item = item;
}
}
Còn phần còn lại của mã thì sao? – fge
Phần đó có vẻ tốt, vì vậy hãy chỉ cho chúng tôi mã xung quanh, lỗi phải ở đó. –
thêm phần còn lại của mã – dysania