鍊錶題思路

2021-10-02 09:31:19 字數 924 閱讀 1242

2:兩數相加

為了避免兩個輸入鍊錶同時為空,建立乙個 dummy 結點,將兩個結點相加生成的新結點按順序加到 dummy 結點之後,由於 dummy 結點本身不能變,所以用乙個指標 cur 來指向新鍊錶的最後乙個結點。取當前結點值的時候,先判斷一下,若為空則取0,否則取結點值。然後把兩個結點值相加,同時還要加上進製 carry。然後更新 carry,直接 sum/10 即可,然後以 sum%10 為值建立乙個新結點,連到 cur 後面,然後 cur 移動到下乙個結點。之後再更新兩個結點,若存在,則指向下乙個位置。while 迴圈退出之後,最高位的進製問題要最後特殊處理一下,若 carry 為1,則再建乙個值為1的結點。

19:刪除倒數第n個點:

設定兩個指標,乙個指標先走n步,若是空,則刪除首元素,不為空,則繼續執行,此時另乙個指標也開始執行,等到第乙個指標到最後,則讓第二個指標跳過倒數第n個數。

21:合併兩個有序鍊錶

先定義乙個新的鍊錶和頭結點,如果l1和l2都存在,則對兩者比較大小,將較小的乙個插入到新鍊錶中,到下乙個接著比較。如果l1沒有了,下乙個結點就是l2.l2也是同理得到。最後返回鍊錶。

141:環形鍊錶:

這是快慢指標的經典應用,乙個指標每次走一步,另乙個指標每次走兩步,兩者指標若是相遇,則證明是環形的,否則不是。

160:相交鍊錶

可以利用環的思想來做,兩個鍊錶均從頭開始遍歷,再遍歷另乙個鍊錶,兩個指標最終會相遇,分為兩種情況;一種是在最後相遇,一種是在相交的點處相遇。

237:刪除鍊錶中的結點:

先把當前節點的值用下乙個節點的值覆蓋了,然後刪除下乙個節點即可。

203.移除鍊錶元素:

當判斷下乙個結點的值跟給定值相同的話,直接跳過下乙個結點,將next指向下下乙個結點,而根本不斷開下乙個結點的next,更不用刪除下乙個結點了。最後還要驗證頭結點是否需要刪除,要的話直接返回下乙個結點(重點,不要忘記判斷)。

20190608鍊錶思路

鍊錶 由兩部分組成,資料和位址 指向下乙個結點 有頭結點即可找到後續元素。包含頭結點,尾結點。鍊錶的操作 1 建立 如果鍊錶為空,建立乙個結點,並把頭給之,並且每建立乙個結點,頭賦予尾,重新開闢空間,依次迴圈,最後釋放空間,並把頭結點返回。2 插入 宣告兩個指標p,q,以及插入值指標,當值小於插入值...

資料結構鍊錶刷題思路總結

最近刷了一些關於鍊錶的題目,所以也在此進行一下總結鍊錶資料結構中主要會用到的一些方法。在鍊錶的題目中,經常會用到頭插法,具體的做法就是新建乙個指標指向一塊空白的記憶體,然後將原指標指向的鍊錶,乙個個插入到我們新建的指標後面。listnode newhead newlistnode while l1 ...

部分鍊錶題

include bool insert last list ls,data data tmp next node return true void display list ls printf n list createlist 建立鍊錶 ls head next null 空鍊錶 return l...