(九)棧(鏈式儲存) 拉個鏈鏈,盤他!

2021-10-07 09:26:03 字數 2010 閱讀 8357

棧的鏈式儲存書上沒有,沒有!但是不能影響我們前進的腳步。盤他!

棧的鏈式儲存實際上就是單鏈表,僅僅在尾部操作,這就是重點。

1.結構

鏈式儲存,當然要典型的鍊錶的結構

typedef

int selemtype;

typedef

struct singlelist

slist;

然後再新增乙個棧的結構,這個全域性結構記錄了棧的關鍵資訊。

typedef

struct

sqs;

2.重點

3.**

sqstacklist.h

#pragma once

#include

#include

typedef

int selemtype;

typedef

struct singlelist

slist;

typedef

struct

sqs;

typedef

int status;

#define error 0;

#define ok 1;

//初始化鍊錶,建立乙個空頭

status init_stack

(sqs* s)

;//壓棧

status push

(sqs* s, selemtype e)

;//出棧

status pop

(sqs* s, selemtype* e)

;//列印鍊錶

void

printsinglelist

(slist* sl)

;

sqstacklist.c

#pragma once

#include

"sqstacklist.h"

extern sqs ssq;

status init_stack

(sqs* s)

lnew->next =

null

; s->base = lnew;

s->top = lnew;

s->stack_size =0;

return ok;

}status push

(sqs* s, selemtype e)

lnew->data = e;

lnew->next =

null

; s->top->next = lnew;

s->top = lnew;

s->stack_size++

;return ok;

}//出棧

status pop

(sqs* s, selemtype* e)

ll = s->base;

for(i =

0; i < s->stack_size -

1; i++

)*e = s->top->data;

free

(s->top)

; s->top = ll;

s->top->next =

null

; s->stack_size--

;return ok;

}void

printsinglelist

(slist* sl)

}

測試**

#include

#include

#include

"sqstacklist.h"

sqs ssq;

intmain()

pop(

&ssq,

&n);

system

("pause");

}

鏈式儲存mysql 鏈棧 棧的鏈式儲存結構

前面講完了棧的順序儲存結構,我們現在來看看棧的鏈式儲存結構,簡稱為鏈棧。鏈棧是沒有附加頭結點的運算受限的單鏈表。棧頂指標就是鍊錶的頭指標。棧是用棧頂來做插入和刪除操作,那麼對於鏈棧的棧頂放在鍊錶的頭部還是尾部呢?單鏈表有頭指標,而棧頂指標也是必須的,那幹嗎不讓它倆合二為一呢,所以比較好的辦法是把棧頂...

線性表6 棧的鏈式儲存(鏈棧)

4.應用 數制轉換 從資料結構角度看,棧和佇列也是線性表,只不過是操作受限的線性表。棧 只允許在一端進行插入和刪除操作的線性表,允許操作的一端為棧頂,不允許操作的一段稱之為棧底。棧頂是表尾,棧底是表頭。後進先出 lifo 先進後出 filo first in last out 儲存 順序儲存 鏈式儲...

資料結構 鏈棧(棧的鏈式儲存結構)

工程目錄結構 函式的返回結果,ok erreo true false 12 typedef int elemtype 結點資料域的資料型別 1314 endif common.c 1 include common.h 2 3status visit elemtype e 4linkstack.h 1...