劍指offer 鍊錶

2021-07-22 09:28:45 字數 768 閱讀 7899

//鍊錶

//鍊錶是一種動態資料結構

struct listnode

;//往鍊錶的末尾新增乙個節點的c++程式如下:

void addtotail(listnode** phead, int value)//注意第乙個引數phead是乙個指向指標的指標。當我們往乙個空鍊錶插入乙個結點時,

else

pnode->m_pnext = pnew; }}

//鍊錶的記憶體不是一次性分配的,因此鍊錶的記憶體不是和陣列一樣是連續的。

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

void removenode(listnode** phead, int value)

lisenode* ptobedeleted = null

if( (*phead)->m_nvalue == value )

else

if(pnode->m_pnext != null && pnode->m_pnext->m_nvalue == value)

} if(ptobedeleted != null)

}//從尾到頭列印鍊錶

void printlistreversingly_recursively(listnode* phead)//遞迴實現

coutvoid printreversingly_iteratively(listnode* phead)//棧實現

while( !nodes.empty())

}

劍指offer 鍊錶

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

劍指offer 鍊錶

在乙個排序的鍊錶中,存在重複的結點,請刪除該鍊錶中重複的結點,重複的結點不保留,返回煉表頭指標。思路1 遞迴版 class solution 找到當前節點與下乙個節點不重複的點,從不重複的點開始遞迴 return deleteduplication phead next else 思路2 非遞迴版 ...

鍊錶 劍指offer

從尾到頭列印鍊錶 思路 先把鍊錶翻轉,然後將翻轉後的鍊錶列印出來 這種方法 因為多分配鍊錶節點指標,故可能會對記憶體的消耗要大一點 時間複雜度為o n vector printlistfromtailtohead listnode head head p2 鍊錶翻轉後,頭結點為p2 while he...