C語言迴圈鍊錶中的一些函式的疑難點

2021-08-22 04:55:57 字數 384 閱讀 1576

第一,在對函式進行初始化的時候,一定要注意,傳參的時候是把結構體變數的位址。

第二,為新結點申請記憶體的時候,一定要用if語句判斷記憶體是否申請成功,如果新結點為null,則記憶體申請失敗。

第三,一定要給新結點的next指標賦空值,避免其成為野指標。

使用插入時,一定要先申請乙個有記憶體的結點。

在對函式進行遍歷的時候,不能使用頭結點p來作為判斷函式遍歷結束的條件,因為p在遍歷的時候會發生變化,所以需要將p賦給乙個新的結點head作為函式遍歷結束的標誌。

一定要先將要插入的結點先指向第零個結點,再把頭結點指向要插入的結點,而不能先將頭結點指向要插入的結點,因為頭結點此時是指向下乙個結點的,不能同時指向2個結點。

一定要先判斷位置的合法性,有沒有在函式的符合範圍長度內。

單向鍊錶中的一些演算法

1.在乙個單向鍊錶中,尋找鍊錶中間節點。使用兩個指標,快指標每次步進為2,慢指標每次步進為1。當快指標到達鍊錶尾部時,慢指標指向的就是鍊錶的中間。node findmiddlenode node head return p1 2.在單向鍊錶中尋找倒數第n個元素 思路同1,使用兩個指標,它們之間保持n...

ios關於retainCount的一些疑問

main.m檔案裡 void test1 student stu void test2 student stu int main int argc,const char argv return 0 執行結果是這樣的 2016 01 24 22 29 01.563 oc5記憶體管理 501 22465...

鍊錶的一些操作

判斷兩個鍊錶是否有交點 判斷兩個單鏈表是否相交,如果相交,給出相交的第乙個點 假設兩個鍊錶都不存在環 相交的煉表示意圖如下所示。兩個沒有環的鍊錶如果是相交於某一結點,如上圖所示,這個結點後面都是共有的。所以如果兩個鍊錶相交,那麼兩個鍊錶的尾結點的位址也是一樣的。程式實現時分別遍歷兩個單鏈表,直到尾結...