單鏈表常見面試題

2021-10-01 21:22:25 字數 1434 閱讀 9427

一、獲取單鏈表的節點個數

思路:遍歷鍊錶

/**

* head 煉表頭結點

* @param head

* @return

*/ //方法:獲取到單鏈表結點的個數(如果是帶頭結點的鍊錶,不統計頭結點)

public static int getlength(heronode head)

int length=0;

//定義乙個輔助變數,沒有統計頭結點

heronode cur=head.next;

while(cur!=null)

return length;

}

二、查詢單鏈表中的倒數第index個節點

思路:從前往後找第(鍊錶長度-index)個節點就是倒數第index個節點

//思路

//1、編寫乙個方法,接收head節點,同時接收index

//2、index表示倒數第index個節點

//3、先把鍊錶從頭到尾遍歷,得到鍊錶總長度

//4、得到size後從鍊錶的第乙個開始遍歷size-index個

public static heronode findlastindexnode(heronode head,int index)

int size=getlength(head);

if(index<0||index>size)

//定義乙個輔助變數,指向第乙個有效節點

heronode cur=head.next;

for(int i=0;i三、單鏈表反轉

思路:先定義乙個新節點reversehead=new heronode();

定義乙個當前節點cur和乙個next節點,next用來儲存原煉表中當前節點的下乙個節點;

從頭到尾遍歷原來的鍊錶,每遍歷乙個節點,就將其取出,並放在新的鍊錶reversehead的最前端

原來的鍊錶的head.next=reversehead.next

//將單鏈表反轉

public static void reversedlist(heronode head)

//cur:當前節點

heronode cur=head.next;//先定義乙個輔助變數cur,幫助遍歷原來的鍊錶

heronode next=null;//指向當前節點cur的下乙個節點

heronode reversehead=new heronode(0, "", "");//新節點

//遍歷原來的鍊錶,每遍歷乙個節點,就將其取出,並放在新的鍊錶reversehead的最前端

while(cur!=null)

//將head.next指向reversehead.next,實現了單鏈表的反轉

head.next=reversehead.next;

}

單鏈表常見面試題

ifndef linklist h define linklist h define crt secure no warnings include include include string h include typedef int datatype typedef struct node no...

單鏈表的常見面試題

單鏈表的基礎操作 單鏈表建立面試題 1.從尾到頭列印單鏈表 2.刪除乙個無頭單鏈表的非尾節點 不能遍歷鍊錶 3.在無頭單鏈表的乙個非頭節點前插入乙個節點 不能遍歷鍊錶 4.單鏈表實現約瑟夫環 josephcircle 5.逆置 反轉單鏈表 6.查詢單鏈表的中間節點,要求只能遍歷一次鍊錶 void p...

單鏈表常見面試題及答案

一 單鏈表結點的刪除 0 刪除單鏈表p指向的那個元素,時間和空間複雜度盡量小 二 單鏈表的訪問 1 找出單鏈表的倒數第k個元素,僅允許遍歷一遍鍊錶 2 找出單鏈表的中間元素,僅允許遍歷一遍鍊錶 三 單鏈表與環的問題 3 判斷單鏈表是否有環 6形狀 4 如何找到環的入口?5 如何知道環的長度?6 帶環...