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

2021-06-25 13:31:18 字數 1464 閱讀 9073

方法一: 使用棧

[html]view plain

copy

#include 

<

stack

>

#include <

stdio.h

>

typedef struct listnode  

listnode;  

listnode *createlistnode(int value)  

void connectlistnode(listnode *currentnode, listnode *nextnode)  

currentnode->

m_pnext

= nextnode

;  }  

void destroylist(listnode *head)  

}  void printlist(listnode *head)  

printf("\n");  

}  void printlistreversingly(listnode *head)  

while(!nodes.empty())  

}  void main()    

執行結果如下:

方法二: 遞迴

源程式[cpp]view plain

copy

#include 

#include 

#include "stack.h"

//尾插法建立鍊錶

void

create_list(linklist &l)  

}  //遞迴方法輸出鍊錶

void

printreverse(linklist &l)  

}     

}  int

main()  

printf("\n遞迴輸出新鍊錶:\n"

);  

printreverse(q);  

printf("\n棧鍊錶:\n"

);  

while

(!stackempty(s))  

return

0;  

}  

結果[cpp]view plain

copy

建立鍊錶以0結束  

1 2 3 4 0  

原鍊錶:  

1       2       3       4  

遞迴輸出新鍊錶:  

4       3       2       1  

棧鍊錶:  

4       3       2       1  

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

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

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

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

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

題目 輸入乙個鍊錶的頭結點,從尾到頭反過來列印出每個結點的值。鍊錶結點定義如下 struct listnode 看到這道題後,很多人的第一反應是從頭到尾輸出將會比較簡單,於是我們很自然的想到把鍊錶中鏈結結點的指標反轉過來,改變鍊錶的方向,然後就可以從頭到尾輸出了。但該方法會改變原來鍊錶的結構。是否允...