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