public class SLList {
public class IntNode {
public int item;
public IntNode next;
public IntNode(int i, IntNode n){
item = i;
next = n;
}
}
public IntNode first;
public SLList(int x){
first = new IntNode(x,null);
}
public void addFirst(int x){
first = new IntNode(x, first);
}
public int getfirst(){
return first.item;
}
public void addLast(int x) {
}
public static void main(String[] args){
SLList L = new SLList(10);
L.addFirst(5);
L.addFirst(8);
L.addLast(9);
System.out.println(L.getfirst());
}
}
如何使用遞回在串列的最后添加一個專案?我想通過遞回添加串列的最后一個,但我無法這樣做,因為我通過指標指向最后一個元素,所以它回傳添加的元素和最后一個元素,而不是整個串列。
uj5u.com熱心網友回復:
在設計遞回方法時,您需要實作兩個部分:
- 代表輸入的基本情況,很明顯預期的輸出將是。在您的情況下,最后一個節點是一個不指向任何其他節點的節點,即它的
next欄位是null. 同樣作為預防措施,我們需要解決給定節點在null訪問其next欄位之前的情況。 - 遞回案例- 是遞回呼叫發生的一部分,并且方法的主要邏輯存在。對于這個任務,遞回情況相當簡單:如果當前節點不是
null并且它指向非空節點,那么應該回傳下一個節點。
為了首先添加一個新的最后一個節點,我們需要找到對現有節點的參考。
這就是產生最后一個節點的遞回方法的樣子:
public IntNode getLast(IntNode curNode) {
if (curNode == null) {
return null;
}
if (curNode.next == null) {
return curNode;
}
return curNode.next;
}
請注意,這getLast()可以回傳一個null. 這意味著該欄位first是null并且我們可以將作業委托給該方法addFirst()。否則,將創建節點的新實體并將其分配給last.next.
public void addLast(int x) {
IntNode last = getLast(first);
if (last == null) {
addFirst(x);
} else {
last.next = new IntNode(x, null);
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/430691.html
