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

2022-02-28 15:07:59 字數 1209 閱讀 9510

關於鍊錶的經典面試題,說實話我第一次看到這個的想法是雙向鍊錶,畢竟直接使用鍊錶的話好像這個結構很符合要求了(其實方便的找到前乙個元素也是雙向鍊錶的設計初衷吧),於是我寫出了如下的**: 

1 #include2 #include3

using

namespace

std;45

class

node

617 node(int

n):value(n)

18{}

19};

20class

linklist

2130

void add(int

n)31

38else

3947}48

void

print()

49*/

56 node *q=tail;

57while(q!=head->front)

5862}63

};64

intmain()

6572

a.print();

73return0;

74 }

但是後來發現其實這個題目的考點並不是鍊錶,而是棧,因為這就是乙個後進先出的結構嘛,但是棧又有顯示棧和隱式棧之分,所謂的顯示展就是我們把鍊錶中的元素乙個個入棧再乙個個彈出(也就是直接使用資料結構中的棧),**如下:

1 #include2 #include3

const

int size=1000000;4

class

stack514

bool push(int

n)15

20else

2125}26

void

print()

2733}34

};35

intmain()

3645}46

s.print();

47return0;

48 }

而隱式棧則是使用遞迴的,因為我們知道函式遞迴呼叫的過程實際上就是不斷壓棧的過程,也就是說,通過遞迴輸出鍊錶中的元素也是可以達到這個效果的。但是這個方法有乙個缺點就是函式遞迴呼叫占用的資源比較多,當遞迴的層數過深的時候可能會產生棧溢位的現象。**如下:

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

方法一 利用棧實現 c include stdafx.h include include using namespace std 鍊錶中的結點型別 struct listnode 從尾到頭列印鍊錶 void printlinkedlistreversely listnode phead while ...

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

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

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

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