1.求單鏈表中有效節點個數
思路(如果有頭節點則去掉頭結點):
1.定義輔助遍歷變數cur,令cur=head.next。
2.定義length記錄資料。
//求單鏈表中有效節點個數(如果有頭結點則去掉頭結點)
public
static
intgetlength
(heronode head)
//定義輔助變數
heronode cur = head.next;
int length =0;
while
(cur!=null)
return length;
}
主方法中測試
system.out.
println
("有效節點個數為:"
+getlength
(singlelist.
gethead()
));
2.查詢單鏈表中倒數第k個節點
思路:1.建立乙個方法,接收head節點和index
2.用index表示倒數第幾個節點
3.先把鍊錶從頭遍歷到尾,得到鍊錶總長度size
4.得到size後,從鍊錶的第乙個開始遍歷(size-index)個,就可以找到
5.如果找到了,返回該節點,如果沒有,返回空。
public
static heronode findheronode
(heronode head,
int index)
//第一次遍歷,呼叫getlength方法,得到鍊錶總長度size
int size =
getlength
(head)
;//定義輔助遍歷節點
heronode cur=head.next;
//判斷是否在程式可執行範圍
if(index<=
0|| index >size)
//for
(int i =
0; i)return cur;
}
主方法中測試
heronode res =
findheronode
(singlelist.
gethead()
,1);
system.out.
println
("res="
+res)
;
3.單鏈表的反轉
思路:1.定義乙個新節點reversehead = new heronode() ;輔助實現鍊錶反轉。定義輔助遍歷指標cur,定義指標next用來指向當前節點的下一節點,防止鍊錶斷開。
2.使得cur指標逐次向下遍歷舊鍊錶,每遍歷乙個節點,就將其取出,放到reversehead 最前端,令cur.next = reversenode.next,reversenode.next=cur,然後讓cur繼續向下移動。
3.鍊錶遍歷完畢,將頭指標與反轉後的鍊錶連線,實現鍊錶反轉。
public
static
void
turnsingelist
(heronode head)
//定義輔助遍歷指標cur和next,next負責暫存當前節點的下乙個節點
//定義乙個新鍊錶reversenode輔助反轉實現
heronode cur = head.next;
heronode next = null;
heronode reversenode =
newheronode(0
," "
," ");
//開始遍歷
while
(cur!=null)
head.next = reversenode.next;
}主方法中測試
system.out.
println
("初始鍊錶:");
singlelist.
showlist()
;system.out.
println
("反轉後:");
turnsingelist
(singlelist.
gethead()
);singlelist.
showlist()
;
4.逆序列印單鏈表(運用棧結構)
思路:1.利用棧先入後出特性,先利用棧的push()方法將鍊錶元素全部壓入棧中,再利用棧的pop()方法將元素從棧中取出。
public
static
void
reverseprint
(heronode head)
//定義棧結構,定義輔助遍歷變數
stack
stack =
newstack
(); heronode cur = head.next;
//先將鍊錶節點壓入棧中
while
(cur!=null)
//先入後出,遍歷棧中節點
while
(stack.
size()
>0)
}
主方法中測試
system.out.
println
("逆序列印後的鍊錶為:");
reverseprint
(singlelist.
gethead()
);
單鏈表常見面試題
ifndef linklist h define linklist h define crt secure no warnings include include include string h include typedef int datatype typedef struct node no...
單鏈表常見面試題
一 獲取單鏈表的節點個數 思路 遍歷鍊錶 head 煉表頭結點 param head return 方法 獲取到單鏈表結點的個數 如果是帶頭結點的鍊錶,不統計頭結點 public static int getlength heronode head int length 0 定義乙個輔助變數,沒有統...
單鏈表的常見面試題
單鏈表的基礎操作 單鏈表建立面試題 1.從尾到頭列印單鏈表 2.刪除乙個無頭單鏈表的非尾節點 不能遍歷鍊錶 3.在無頭單鏈表的乙個非頭節點前插入乙個節點 不能遍歷鍊錶 4.單鏈表實現約瑟夫環 josephcircle 5.逆置 反轉單鏈表 6.查詢單鏈表的中間節點,要求只能遍歷一次鍊錶 void p...