Tôi đang làm việc trên một chương trình không sử dụng lớp được xây dựng trong Danh sách liên kết của Java; Tôi đang xây dựng nó từ đầu. Tôi đã thành công với mọi thứ ngoại trừ việc viết một phương thức chèn một Node vào một vị trí cụ thể của danh sách liên kết.Chèn nút vào giữa Danh sách được liên kết và vô tình chèn nút rỗng cũng
Tôi có một phương pháp đặt một nút cụ thể làm nút "hiện tại". Vì vậy, ví dụ, tôi có một danh sách liên kết trông như thế này: mèo ->chó ->làm ->tốt ->vật nuôi, và "hiện tại" bằng 2; điều đó có nghĩa là nút "hiện tại" là "chó".
Từ đây, giả sử tôi muốn chèn Nút mới ở vị trí "hiện tại" có trường thông tin đọc và. Nếu được thực hiện một cách chính xác, danh sách liên kết cuối cùng sẽ là: mèo ->và ->chó ->làm ->tốt ->vật nuôi; "và" sẽ thay thế "chó" tại vị trí 2.
Vì vậy, đây là vấn đề của tôi: phương pháp của tôi hoạt động để chèn một Nút mới ở vị trí thứ hai, nhưng đã xảy ra lỗi khi liên kết nút mới được tạo với các nút đã tồn tại trước đó. Tôi không chỉ chèn nút mới vào danh sách, mà còn chèn một nút không có thông tin trước "chó". Như mã của tôi hiện đang chạy, đầu ra trông như thế này: mèo ->và -> (trống) ->chó ->làm ->tốt ->vật nuôi.
Tôi chắc chắn 99,9% vấn đề nằm trong phần (nếu hiện tại! = Null) của mã, tôi không thể tìm ra cách khắc phục.
Bất kỳ suy nghĩ nào về lý do tại sao tôi chèn một nút trống ngoài nút mà tôi thực sự muốn thêm?
public void insert() {
System.out.println("Please enter the text you wish to insert, or type \"end\" if you are done inserting.");
String theString;
theString = console.nextLine();
while (!theString.equals("end")){
newNode = new Node();
newNode.info = theString;
newNode.next = null;
if (first == null){
first = newNode;
last = newNode;
} else if (current != null){
Node p = new Node (current.info, current.next);
current.info = newNode.info;
current.next = p;
}
else {
last.next = newNode;
last = newNode;
}
System.out.println("Please enter the text you wish to insert, or type \"end\" if you are done inserting.");
theString = console.nextLine();
}
}
EDIT
Toàn bộ chương trình là khá dài, nhưng ở đây là "setline" phương pháp mà bộ hiện nay tương đương với bất cứ vị trí người dùng muốn chèn Node của họ tại. Nó lấy một tham số "int line" được lấy thông qua một dấu nhắc người dùng.
public Node setLine(int line) {
int index = 0;
current = first;
while (index < line) {
previous = current;
current = current.next;
index++;
}
return current;
}
Loại điều này bạn chỉ phải làm việc qua từng bước, thường với nhiều lệnh gọi System.out.println. Nó thực sự là một vấn đề khá phổ biến, nhưng một trong những bạn cần phải tìm ra chính mình. –
Lưu ý rằng bạn nên nghi ngờ về trường hợp bạn tạo Nút mới thứ hai - bạn chỉ cần một nút cho bất kỳ chèn nào. –
'Console',' java.util.Scanner' là gì? –