資料結構(棧 順序儲存 )

2021-10-09 12:37:35 字數 2310 閱讀 8439

棧是特殊的線性表,規定插入和刪除在同一端進行

進行插入和刪除的那一端成為棧頂,另一端為棧底

插入為進棧,刪除為出棧

先進後出

ps:例如:abc進棧、出棧共有幾種情況

上溢:超出規定的空間大小還進行插入操作

下溢:棧中元素已經用完了還進行刪除操作

#include

#include

#include

#define maxsize 100

typedef

struct

sequence_stack;

void

init

(sequence_stack *st)

intempty

(sequence_stack st)

intread

(sequence_stack st)

else

return st.a[st.top -1]

;}void

push

(sequence_stack *st,

int x)

st->a[st->top]

= x;

++st->top;

}void

pop(sequence_stack *st)

--st->top;

}void

display

(sequence_stack st)

for(

int i =

0; i < st.top;

++i)

printf

("%5d"

, st.a[i]);

}void

do_empty

(sequence_stack *st)

st->top =0;

}int

main()

#include

#include

#define maxsize 100

typedef

struct

sequence_stack;

void

init

(sequence_stack *st)

intempty

(sequence_stack st)

intread

(sequence_stack st)

else

return st.a[st.top -1]

;}void

pop(sequence_stack *st)

--st->top;

}void

push

(sequence_stack *st,

int x)

st->a[st->top]

= x;

++st->top;

}int

match_kuohao

(char c)

':if(

!empty

(s)&&

read

(s)==

'else

return0;

case

']':if(

!empty

(s)&&

read

(s)==

'[')

else

return0;

case

')':if(

!empty

(s)&&

read

(s)==

'(')

else

return0;

}++i;

}return

empty

(s);

/*棧為空則匹配,否則不匹配*/

}int

main()

st.top = num;

char c[maxsize]

;printf

("請輸入括號(包括(){}):");

for(

int i =

0; i < st.top;

++i)if(

!match_kuohao)

printf

("不匹配");

else

printf

("匹配");

return0;

}

順序儲存 資料結構 棧

備註 以列表為基礎進行對此的封裝,以便達到棧的效果及作用 1 2棧的順序儲存結構 3重點 4 56 自定義棧異常 7class stackerror exception 8pass910 基於列表實現順序棧 11class sstack 12def init self 13 約定列表的最後乙個元素為...

資料結構 棧的順序儲存結構

什麼是棧?簡單的說是乙個後進先出的表,類似於彈夾,後入的子彈先打出來。下面是棧的一些具體操作步驟 首先是棧的結構定義 typedef int selemtype typedef struct sqstack,sq 棧的初始化 建立操作 sq initstack sq s s top 1 printf...

資料結構 棧的順序儲存

棧是一種後進先出的資料結構,也就是說他不像陣列那樣子,可以在中間插入,棧只能夠在上乙個存入資料的後面再存資料,而且只能取現進去的資料。棧簡稱lifo結構。棧是限定僅在表位進行插入和刪除操作的線性表。允許插入和刪除的一端叫棧頂,另一端叫棧底,不含任何元素的叫空棧。棧的插入操作,叫做進棧,也稱作壓棧,入...