免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
【數(shù)據(jù)結(jié)構(gòu)】單鏈表逆置:頭插法圖解

利用頭插法能重新建立帶頭節(jié)點(diǎn)的新鏈表

下面簡單介紹一下,算法思想結(jié)合圖示看

算法思想:逆置鏈表初始為空,表中節(jié)點(diǎn)從原鏈表中依次“刪除”,再逐個(gè)插入逆置鏈表的表頭(即“頭插”到逆置鏈表中),使它成為逆置鏈表的“新”的第一個(gè)結(jié)點(diǎn),如此循環(huán),直至原鏈表為空。

  1. LNode *Inverse(LNode *L)
  2. {
  3. LNode *p, *q;
  4. p = L->next;
  5. L->next = NULL;
  6. while (p != NULL)
  7. {
  8. q = p;
  9. p = p->next;
  10. q->next = L->next;
  11. L->next = q;
  12. }
  13. return L;
  14. }

接下來,進(jìn)行圖解:

剛開始是這樣

’循環(huán)前的操作

進(jìn)入循環(huán),分別用q和p記錄第一個(gè)和第二個(gè)節(jié)點(diǎn)

 

 進(jìn)入第二輪循環(huán),這是發(fā)生重大變化的關(guān)鍵時(shí)期

 這張圖調(diào)整一下

 直到鏈表為空


這篇文章已經(jīng)一年半了,還是源源不斷有不同的評(píng)論,去探討相關(guān)的問題,其實(shí)圖解不一定清晰。下面用更簡明的方式給大家說一下什么情況。

這里采用Java的寫法,C一定也能看懂。

我首先創(chuàng)建三個(gè)節(jié)點(diǎn),一個(gè)是當(dāng)前節(jié)點(diǎn)cur、一個(gè)是cur上一個(gè)節(jié)點(diǎn)pre。另外就是tmp。

每次循環(huán),我用tmp記錄cur下一個(gè)節(jié)點(diǎn),接著將cur的next指針指向上一個(gè)節(jié)點(diǎn)pre。這個(gè)時(shí)候就完成了一次反轉(zhuǎn)操作。

接著將pre和cur的記錄往后移動(dòng)一次,重復(fù)上面的操作。

直至達(dá)到鏈表結(jié)尾。

  1. class Solution {
  2. public ListNode reverseList(ListNode head) {
  3. //申請節(jié)點(diǎn),pre和 cur,pre指向null
  4. ListNode pre = null;
  5. ListNode cur = head;
  6. ListNode tmp = null;
  7. while(cur!=null) {
  8. //記錄當(dāng)前節(jié)點(diǎn)的下一個(gè)節(jié)點(diǎn)
  9. tmp = cur.next;
  10. //然后將當(dāng)前節(jié)點(diǎn)指向pre
  11. cur.next = pre;
  12. //pre和cur節(jié)點(diǎn)都前進(jìn)一位
  13. pre = cur;
  14. cur = tmp;
  15. }
  16. return pre;
  17. }
  18. }
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Java數(shù)據(jù)結(jié)構(gòu)
輸入一個(gè)鏈表輸出該鏈表中倒數(shù)第K個(gè)節(jié)點(diǎn)(BAT面試題)
554,反轉(zhuǎn)鏈表 II
單鏈表知識(shí)詳解
【LeetCode練習(xí)題】Reverse Linked List II
線性表的鏈?zhǔn)酱鎯?chǔ)--單鏈表
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服