關於單鏈表的常見面試題(筆記三)

2021-10-09 14:57:40 字數 2870 閱讀 7657

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...