日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

第二章 栈和队列(1)——顺序存储

發(fā)布時(shí)間:2025/3/20 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 第二章 栈和队列(1)——顺序存储 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
第二章 棧和隊(duì)列(1)——順序存儲(chǔ)

1、棧(Stack):是一種特殊的線性表(數(shù)據(jù)元素之間的關(guān)系是線性關(guān)系),其插入、刪除只能在表的一端進(jìn)行,另一端固定不動(dòng)。

2、術(shù)語(yǔ):

棧頂(top):插入、刪除的一端;

棧底(bottom):固定不動(dòng)的一端;

入棧(push):又稱壓入,即插入一個(gè)元素;

出棧(pop):又稱彈出,即刪除一個(gè)元素;

3、棧的操作

1)棧初始化Inistack(s):將棧置為空;

2)入棧Push(s):即在棧頂插入一個(gè)元素;

3)出棧Pop(s):即在棧頂刪除一個(gè)元素;

4)取棧頂元素Get_top(s):訪問(wèn)棧頂元素;

5)判斷棧是否空Empty(s):判斷是否為空;

6)求棧的大小Current_size(s):求棧中元素個(gè)數(shù);

7)棧清空Clear(s):將棧清為空;

4、棧的ADT描述

ADT Stack{data structure:D={ai|ai∈D0 i=1,2,... n>=0}R={N}N={<ai-1,ai>|ai-1,ai∈D0 i=2,3,4,...}D0是某個(gè)對(duì)象operations:Initiate(S);Push(S);Pop(S);Get_top(S);Empty(S);Current_size(S);Clear(S); }ADT Stack

?

5、存儲(chǔ)方式:同一般線性表的順序存儲(chǔ)結(jié)構(gòu)完全相同。但是棧底可以在地址低端,也可以在地址高端。

棧的順序存儲(chǔ)結(jié)構(gòu)的特點(diǎn):簡(jiǎn)單,方便,但易產(chǎn)生溢出。

上溢(overflow):棧已經(jīng)滿,又要壓入元素;

下溢(Underflow):棧已經(jīng)空,還要彈出元素;

注:上溢是一種錯(cuò)誤,使問(wèn)題的處理無(wú)法進(jìn)行下去;而下溢一般認(rèn)為是一種結(jié)束條件,即問(wèn)題處理結(jié)束。

6、慮擬實(shí)現(xiàn):

#define STACK_INIT_SIZE 100; #define STACKINCREMENT 10; typedef struct {SElemType *base; //在棧構(gòu)造之前和銷毀之后,base=NULLSElemType *top;//棧頂指針int stacksize; }SqStack;

?

7、操作

1)棧初始化

Status InitStack(SqStack &S) {S.base=(SElemType*)malloc(STACK_INIT_SIZE*sizeof(SElemType))if(!S.base)exit(OVERFLOW);S.top=S.base;S.stacksize=STACK_INIT_SIZE;return OK; }

?

2)入棧??? //在棧頂插入新元素,要考慮上溢的處理

Status Push(SqStack &S, SElemType e) {if(S.top-S.base>=S.stacksize){S.base=(SElemType*)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(SElemType));if(!S.base)exit(OVERFLOW)S.top=S.base+S.stacksize;S.stacksize+=STACKINCREMENT;}*S.top++=e;reutrn OK; }

?

3)出棧//若棧不空,則刪除S的棧頂元素,用e返回其值

Status Pop(SqStack &S, SElemType &e) {if(S.top==S.base) return ERROR;e=*--S.top;return OK; }

?

4)判斷棧是否空

Status StackEmpty(SqStack S) {if(S.top=S.base)return TRUE;else return FALSE; }

?

5)取棧頂元素

Status GetTop(SqStack S, SElemType &e) {//若棧不空,用e返回棧頂元素if(S.top==S.base) return ERROR;e=*(S.top-1);return OK; } posted on 2014-04-13 16:24 ii沙漠 閱讀(...) 評(píng)論(...) 編輯 收藏

轉(zhuǎn)載于:https://www.cnblogs.com/shamoof/p/3662386.html

總結(jié)

以上是生活随笔為你收集整理的第二章 栈和队列(1)——顺序存储的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。