單鏈表相關題目

2022-08-14 04:48:14 字數 2719 閱讀 3901

1. //

獲取鍊錶中的有效節點數  

2.     //

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

3.     public

static

intgetlength(hero head)   

7.         int length = 0;  

8.         //

定義乙個輔助的變數, 這裡我們沒有統計頭節點  

9.         hero temp =head.getnext();  

10.         while (temp != null

)   

14.         return

length;  

15.     }

思路分析:

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

2. index 表示是倒數第 index 個節點

3. 先把鍊錶從頭到尾遍歷,得到鍊錶的總的長度 getlength

4. 得到 size 後,我們從鍊錶的第乙個開始遍歷 (size-index)個,就可以得到

5. 如果找到了,則返回該節點,否則返回 null

1. public

static hero getlastindexnode(hero head, int

index)   

5.         int length = getlength(head);//

第乙個遍歷得到鍊錶的長度(節點個數)  

6.         //

第二次遍歷 size-index 位置,就是我們倒數的第 index 個節點  

7.         //

做乙個 index 的校驗  

8.         if (index <= 0 || index >length)   

11.         hero temp = head.getnext();//

定義給輔助變數, for 迴圈定位到倒數的 index  

12.         for (int i = 0; i < length - index; i++)   

15.         return

temp;  

16.     }

思路分析:

1.先定義乙個新的頭結點: reversehead=new hero();

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

3、 原鍊錶的head.next=reversehead.next

1. //

將單鏈表反轉(面試題)  

2.    public

static

void

reverselist(hero head)   

7.        //

定義乙個輔助的變數,幫助我們遍歷原來的鍊錶  

8.        hero temp =head.getnext();  

9.        hero tempnext = null;//

用於存放指向當前temp節點的下乙個節點  

10.        hero reverselink = new hero(-1, "", "");//

定義新的頭結點(屬於無效節點)  

11.        //

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

12.        while (temp != null

)   

18.        //

將head.next指向reverselink。next,實現單鏈表的反轉  

19.        head.setnext(reverselink.getnext());  

20.    }

思路分析:

上面的題的要求就是逆序列印單鏈表.

方式1: 先將單鏈表進行反轉操作,然後再遍歷即可,這樣的做的問題是會破壞原來的單鏈表的結構

方式2:可以利用棧這個資料結構,將各個節點壓入到棧中,然後利用棧的先進後出的特點實現了逆序列印的效果.

舉例演示棧的使用 stack

1. //

從尾到頭列印單鏈表(面試題)  

2.    //

可以利用棧這個資料結構,將各個節點壓入到棧中,然後利用棧的先進後出的特點,就實現了逆序列印的效果  

3.    public

static

void

reverseprint(hero head)  

7.        stackstack = new stack<>();//

建立要給乙個棧,將各個節點壓入棧  

8.        hero temp=head.getnext();  

9.        //

將鍊錶的所有節點壓入棧  

10.        while (temp!=null

)  14.        //

將棧中的節點進行列印,pop 出棧  

15.        while (stack.size()>0)  

18.    }

LeetCode單鏈表相關題目

目錄 1.移除鍊錶元素 刪除鍊錶中等於給定值val的所有節點 2.反轉乙個鍊錶 3.找出鍊錶的中間結點 4.輸出鍊錶中倒數第k個結點 5.合併兩個有序鍊錶,合併後依然有序 6.找出兩個單鏈表相交的起始結點 輸入 1 2 6 3 4 5 6,val 6 輸出 1 2 3 4 5 definition ...

單鏈表相關演算法

include include using namespace std typedef int elemtype typedef struct node nodetype nodetype create s next null return head void dis nodetype head w...

單鏈表相關操作

這是自己寫的最長的一次 了 在機房敲了一天。以前一直用list來水鍊錶的題 這次終於體會到痛苦了 include include include include include include using namespace std typedef struct node 單鏈表 s,list vo...