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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

数据结构之 顺序栈、共享栈、链栈

發(fā)布時間:2025/3/15 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据结构之 顺序栈、共享栈、链栈 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

順序棧、共享棧、鏈棧

  • 一、思維導(dǎo)圖:
  • 二、棧的定義:
  • 三、棧的特點:
  • 四、棧的基本操作:
  • 五、常考題型:
  • 六、順序棧:
    • 1.思維導(dǎo)圖:
    • 2.順序棧基本操作的實現(xiàn):
      • 1.定義棧:
      • 2. 初始化棧:InitStack(&s)
      • 3.銷毀棧:DestoryStack(&S)
      • 4.進棧:Push(&s,x)
      • 5.出棧:Pop(&s,&x)
      • 6.讀棧頂元素:GetTop(s,&x)
      • 7.判空棧:StackEmpty(S)
  • 七、共享棧:
    • 1.共享棧的定義
    • 2.順序棧基本操作的實現(xiàn):
      • 1.定義棧:
      • 1.初始化棧:InitStack(&s)
      • 2.銷毀棧:DestoryStack(&L)
      • 3.進棧:Push(&s,x)
      • 4.出棧:Pop(&s,&x)
      • 5.讀棧頂元素:GetTop(s,&x)
  • 八、鏈棧:
    • 1.思維導(dǎo)圖:
    • 2.鏈棧基本操作的實現(xiàn):
      • 1.定義鏈棧:
      • 2.
      • 3.
      • 4.
      • 5.
      • 6.
      • 7.
  • 九、棧的數(shù)學性質(zhì)

一、思維導(dǎo)圖:

**ps:**棧和線性表非常類似,學習過程中可以對比進行學習。

二、棧的定義:

特殊的線性表。僅在標尾進行插入或刪除操作的線性表棧頂 = 表尾棧底 = 表頭空棧 = 空表

三、棧的特點:

LIFO(last in first out)

四、棧的基本操作:

初始化棧:InitStack(&s)銷毀棧:DestoryStack(&L)進棧:Push(&s,x)出棧:Pop(&s,&x)讀棧頂元素:GetTop(s,&x)判空棧:StackEmpty(S)

五、常考題型:

結(jié)論:n個不同元素進棧,出棧元素不同排列的個數(shù)為

六、順序棧:

1.思維導(dǎo)圖:

2.順序棧基本操作的實現(xiàn):

1.定義棧:

#define MaxSize 100typedef struct{int data[MaxSize]; //靜態(tài)數(shù)組存放棧中元素 int top; //棧頂指針 }SqStack;

2. 初始化棧:InitStack(&s)

**ps:**初始化不同,判空、進棧、出棧判斷條件都會不同。當S.top = 0時,小伙伴們自己思考一下

void InitStack(SqStack &S){S.top = -1; }

3.銷毀棧:DestoryStack(&S)

bool DestoryStack(SqStack &S) {S.top = NULL;return true; }

4.進棧:Push(&s,x)

bool Push(SqStack &S,int x){if(S.top == MaxSize-1)return false;//S.data[++S.top] = x;S.top = S.top + 1;S.data[S.top] = x;return true;}

5.出棧:Pop(&s,&x)

bool Pop(SqStack &S,int &x){if(S.top == -1)return false;//x = S.data[S.top--];x = S.data[S.top];S.top = S.top - 1;return true; }

6.讀棧頂元素:GetTop(s,&x)

bool GetTop(SqStack &S,int &x){if(S.top == -1)return false;x = S.data[S.top];return true; }

7.判空棧:StackEmpty(S)

bool StackEmpty(SqStack S){if(S.top == -1)return true;elsereturn false; }

七、共享棧:

1.共享棧的定義

倆個棧共享同一片空間

2.順序棧基本操作的實現(xiàn):

1.定義棧:

#define MaxSize 100typedef struct{int data[MaxSize]; //靜態(tài)數(shù)組存放棧中元素 int top0; int top1; }SqStack;

1.初始化棧:InitStack(&s)

void InitStack(SqStack &S){S.top0 = -1;S.top1 = MaxSize;}

2.銷毀棧:DestoryStack(&L)

bool DestoryStack(SqStack &S) {S.top0 = NULL;S.top1 = NULL;return true; }

3.進棧:Push(&s,x)

//只演示其中一個棧 bool Push(SqStack &S,int x){if(S.top0 + 1 == top1)return false;//S.data[++S.top] = x;S.top = S.top + 1;S.data[S.top] = x;return true;}

4.出棧:Pop(&s,&x)

//只演示其中一個棧 bool Pop(SqStack &S,int &x){if(S.top0 == -1)return false;//x = S.data[S.top--];x = S.data[S.top];S.top = S.top - 1;return true; }

5.讀棧頂元素:GetTop(s,&x)

bool GetTop(SqStack &S,int &x){if(S.top0 == -1)return false;x = S.data[S.top0];return true; }

八、鏈棧:

1.思維導(dǎo)圖:

2.鏈棧基本操作的實現(xiàn):

1.定義鏈棧:

typedef struct Linknode{int data;struct Linknode *next; } *LiStack;

2.

3.

4.

5.

6.

7.

九、棧的數(shù)學性質(zhì)

n個不同元素進棧,出棧元素不同排列的個數(shù)為:1/(n+1)Cn2n

總結(jié)

以上是生活随笔為你收集整理的数据结构之 顺序栈、共享栈、链栈的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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