面試題4 從尾到頭列印鍊錶

2021-06-16 17:39:47 字數 1119 閱讀 4027

方法一:利用棧實現

c++**:

#include "stdafx.h"

#include #include using namespace std;

//鍊錶中的結點型別

struct listnode

;//從尾到頭列印鍊錶

void printlinkedlistreversely(listnode *phead)

while (!tempstack.empty())

cout << endl;

}}

方法二:遞迴實現c++**:

#include "stdafx.h"

#include #include using namespace std;

//鍊錶中的結點型別

struct listnode

;//從尾到頭列印鍊錶

void printlinkedlistreversely(listnode *phead)

cout << phead->m_nkey << " "; }}

int _tmain(int argc, _tchar* argv)

else

plistnode->m_pnext = null;

pcurrenttail->m_pnext = plistnode;

pcurrenttail = plistnode;

} }printlinkedlistreversely(pheadnode);

listnode *pnode = pheadnode;

listnode *pnext = null;

while (pnode != null)

system("pause");

return 0;

}

基於遞迴的**很簡潔,但它存在缺點:當鍊表非常長的時候就會導致函式呼叫的層級很深,從而有可能導致棧溢位。顯然相比方法一用棧基於迴圈實現的**的魯棒性更好些。

面試題5 從尾到頭列印鍊錶

方法一 使用棧 html view plain copy include stack include stdio.h typedef struct listnode listnode listnode createlistnode int value void connectlistnode lis...

面試題5 從尾到頭列印鍊錶

題目 輸入乙個鍊錶的頭結點,從尾到頭反過來列印出每個節點的值。鍊錶定義結構如下 struct listnode 通常遍歷的順序是從頭到尾的順序,可輸出的順序確是從尾到頭。也就是說第乙個遍歷到的節點最後乙個輸出,而最後乙個遍歷到的節點第乙個輸出。這就是典型的 後進先出 我們可以用棧實現這種順序。每經過...

面試題5 從尾到頭列印鍊錶

鍊錶的建立,插入結點,刪除結點等操作都只需要20行左右的 來實現。鍊錶是一種動態資料結構,因為在建立鍊錶的時候,無須知道鍊錶的長度。當插入乙個結點的時候,只需要為新結點分配記憶體,然後調整指標的指向來確保新結點被鏈結到鍊錶當中。記憶體分配不是在建立鍊錶的時候一次完成的,而是每新增乙個結點分配一次記憶...