資料結構 線性結構 反向輸出單鏈表

2021-09-27 07:28:51 字數 833 閱讀 3388

要求:

有帶頭節點的單鏈表l,編寫演算法實現從尾到頭反向輸出每個結點的值。

分析:這裡有一種思路是利用棧,在正向遍歷單鏈表的時候進行入棧,然後遍歷完成之後依次出棧,既可實現反向輸出。

既然可以用棧,那麼也可以用遞迴的方式來實現。然而遞迴是利用的棧,實質上是相同的。

遞迴的時候,系統需要設立乙個「工作棧」作為整個遞迴函式執行期間使用的資料儲存區。每遞迴一次,則需要入存實在引數,所有區域性變數以及上一層的返回位址等資訊。這樣一來,遞迴的效率遠不如直接用棧實現。

下面給出了利用棧實現該功能的**。

#include#include#define stack_innit_size 20

#define stackincrment 5

struct sqstack//棧

;struct lnode//鍊錶結點

;int initstack(struct sqstack *s)//構造空棧

int push(struct sqstack *s,int e)//入棧

*(s->top) = e;

s->top++;

return 1;

}int pop(struct sqstack *s)//刪除棧頂元素,並返回

s->top--;

int e = *(s->top);

return e;

}int init(struct lnode *l, int i)

int i;

while(s.top!=s.base)

return 0;

}int main()

1 資料結構 線性結構之單鏈表

一 定義 單向鍊錶 單鏈表 時鍊錶的一種,它由節點組成,每個節點都包含下乙個節點的指標。1 定義節點類 定義節點類 struct node 2 定義單鏈錶類class slist 二 實現 單鏈表的實現方式有很多種,常見的有 1 帶頭結點的單鏈表 2 不帶頭結點的單鏈表 3 帶頭節點和尾節點的單鏈表...

資料結構 單鏈表實現線性佇列

隊空條件 fron rear null 隊滿條件 不考慮 進隊操作 將新的節點插入到鍊錶尾。出隊操作 刪除鍊錶第乙個節點。注意出隊和入隊操作 入隊操作要考慮到兩種情況 1入隊前,隊為空時,隊首和隊尾指標都指向新的節點。2.入隊後,隊不為空,只動隊尾指標就行。出隊操作要考慮三種情況 1.原隊為空,則返...

資料結構單鏈表

初學資料結構,貼段自己編寫的單鏈表程式,希望自己能夠一直以強大的學習熱情持續下去!自勉!2012年3月30日 於大連 include using namespace std typedef struct node linklist,node linklist makelist int n void ...