日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

來源 | OSCHINA 社區(qū)

作者 | 華為云開發(fā)者聯(lián)盟-高彬滔

摘要:本文為大家詳解數(shù)據(jù)結(jié)構(gòu)中棧的定義和操作。

本文分享自華為云社區(qū)《數(shù)據(jù)結(jié)構(gòu):詳細(xì)講解棧的定義、棧的操作》,作者:高彬滔 。

1.棧的定義

棧(stack):是只允許在一端進(jìn)行插入或者刪除操作的線性表(即后進(jìn)先出,大概可以理解為吃飽了吐出來)

  • 空棧:不含元素的空標(biāo)配
  • 棧頂:表尾端
  • 棧底:表頭端

  • 進(jìn)棧順序:a1->a2->a3->a4->a5
  • 出棧順序:a5->a4-a3->a2->a1
2. 對(duì)比線性表和棧基本操作 2.1 線性表的基本操作
  • InitList (&L): 初始化表。構(gòu)造一個(gè)空的線性表 L,分配內(nèi)存空間
  • DestoryList (&L): 銷毀操作。銷毀線性表,并且釋放線性表 L 所占用的空間
  • ListInsert (&L,i,e): 插入操作,在表 L 中的第 i 個(gè)位置上插入指定元素 e
  • ListDelete (&L,i,e): 刪除操作,刪除表 L 中的第 i 個(gè)位置的元素,并且用 e 返回刪除元素的值
  • LocateElem (L,e): 按值查找操作,在表 L 中查找具有給定關(guān)鍵字值的元素
  • GetElem (L,i): 按位查找操作,獲取表 L 中第 i 個(gè)位置的元素的值
2.2 棧的基本操作
  • InitStack (&S): 初始化棧,構(gòu)造一個(gè)空棧 S,分配內(nèi)存空間
  • DestoryStack (&S): 銷毀棧,銷毀并釋放棧 S 所占用的內(nèi)存空間
  • Push (&S,x): 進(jìn)棧,若棧 S 未滿,則將 x 加入使之成為新的棧頂
  • Pop (&S,&x): 出棧,若棧 S 非空,則彈出棧頂元素,并用 x 返回
  • GetTop (S,&x): 讀棧頂元素,若棧 S 非空,則用 x 返回棧頂元素

其他常見操作:StackEmpty (S): 判斷一個(gè)棧 S 是否為空,若 S 為空,則返回 true,否則返回 false

3. 順序棧

3.1 順序棧的定義# defineMaxSize 10 //定義棧中元素的最大個(gè)數(shù)

typedefstruct{

ElemType data[MaxSize]; //靜態(tài)數(shù)組存放棧中的元素

inttop; //棧頂指針

}SqStack; //結(jié)構(gòu)體重命名

聲明一個(gè)順序棧后就會(huì)在內(nèi)存中分配一整片連續(xù)的空間,其中內(nèi)存大小為:MaxSize*sizeof (ELemType)

voidtestStack{

SqStack S; //聲明一個(gè)順序棧

3.2 棧的初始化操作

由于棧頂指針 top 需要指向此時(shí)棧頂元素,所以讓 top 指向 0 是不合理的,可以初始化讓 top 指向 - 1; 判斷一個(gè)棧是否為空,即判斷 S.top 是否等于 - 1

初始化棧:

voidInittack(SqStack){

SqStack S; //聲明一個(gè)順序棧

S.top=- 1;

}

判斷棧空:

bool StackEmpty(SqStack S){

if(S.top==- 1) //棧空

returntrue;

else

returnfalse; //非空

3.3 進(jìn)棧操作

分析:

  1. 判斷棧是否為空
  2. 棧頂指針 + 1
  3. 新元素入棧
bool Push(SqStack &S,ElemType x){

if(S.top==NaxSize- 1)

returnfalse;

S.top+= 1;

S. data[S.top]=x;

returntrue;

3.4 出棧操作bool Push(SqStack &S,ElemType &x){

if(S.top==- 1)

returnfalse;

x=S. data[S.top--];

returntrue;

3.5 讀棧頂元素操作bool GetTop(SqStack &S,ElemType &x){

if(S.top==- 1)

returnfalse;

x=S. data[S.top];

returntrue;

4. 共享?xiàng)?/strong>

兩個(gè)棧共享同一片空間

# defineMaxSize 10 //定義棧中元素的最大個(gè)數(shù)

typedefstruct{

ElemType data[MaxSize]; //靜態(tài)數(shù)組存放棧中的元素

inttop0; //0號(hào)棧棧頂指針

inttop1; //1號(hào)棧棧頂指針

}SqStack; //結(jié)構(gòu)體重命名

初始化棧:

voidInitStack(ShStack &S){

S.top0= -1;

S.top1=MaxSize;

5. 鏈棧的定義

  • 進(jìn)棧 / 出棧都只能在棧頂一段進(jìn)行
  • 鏈頭作為棧頂
typedef structLinknode{

ElemType data; //數(shù)據(jù)域

structLinknode* next; //指針域

}*LiStack //棧類型定義

END

谷歌開發(fā)全新搜索引擎Magi,由人工智能技術(shù)驅(qū)動(dòng)

分享到:
標(biāo)簽:數(shù)據(jù)結(jié)構(gòu)
用戶無頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績?cè)u(píng)定