劍指offer 鍊錶的操作

2021-07-22 05:21:16 字數 1014 閱讀 9796

在鍊錶中找到第乙個含有某值的節點並刪除該節點的**:

void addtotail(listnode** phead,int value)//phead是乙個指向指標的指標

else

}

/*

在下面的鍊錶中找到第乙個含有某值的節點並刪除該節點的**

*/void removenode(listnode** phead,int value)

else }

if(ptobedeleted != null)

}

/*

往鍊錶的末尾中新增乙個節點

*/void addtotail(list** phead,int value)

else

}

/**

* struct listnode

* };

*//*

一般就是想把鍊錶中的鏈結結點的指標反轉過來,改變鍊錶的方向,然後就可以從頭到尾輸出了,但該方法會改變原來鍊錶的結構

是否允許在列印鍊錶的時候修改鍊錶的結構?

如果不能改變鍊錶的結構:

遍歷的順序是從頭到尾的順序,可輸出的順序卻是從尾到頭,因為就是說第乙個遍歷到節點的最後乙個輸出,

而最後乙個遍歷到的節點第乙個輸出。這就是典型的「後進先出」,這可以利用棧實現這種順序。

每經過乙個節點的時候,把該節點放到乙個棧中。當遍歷完整個鍊錶後,再從棧頂開始逐個輸出節點的值,

此時輸出的節點的順序已經反轉過來了

*/class solution

printf("%d\t",head->val);}}

return 1;*/

vectordev;

if(head!=null)

dev.push_back(head->val);

}return dev;

}};

《劍指offer》p52

劍指offer常用鍊錶操作

劍指offer中有很多的關於鍊錶的操作,現總結如下 對於單向鍊錶,由於不能回溯,故比雙向指標要更稍微複雜些 include include using namespace std 單鏈表的資料結構 struct list node class list solution i return list ...

劍指offer 鍊錶

單向鍊錶的結構定義 typedef int datatype struct listnode 問題1 往鍊錶的末尾新增乙個結點 給定頭結點,往末尾插入乙個結點 void insertnode listnode head,datatype key listnode p head while p nex...

劍指offer 鍊錶

鍊錶 鍊錶是一種動態資料結構 struct listnode 往鍊錶的末尾新增乙個節點的c 程式如下 void addtotail listnode phead,int value 注意第乙個引數phead是乙個指向指標的指標。當我們往乙個空鍊錶插入乙個結點時,else pnode m pnext ...