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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

顺序栈的介绍及实现

發(fā)布時(shí)間:2024/7/5 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 顺序栈的介绍及实现 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1 棧

從數(shù)據(jù)結(jié)構(gòu)角度來講,棧也是線性表,其操作是線性表操作的子集,屬操作受限的線性表。
但從數(shù)據(jù)類型的角度看,它們是和線性表大不相同的重要抽象數(shù)據(jù)類型。

◆ 棧是只準(zhǔn)在一端進(jìn)行插入和刪除操作的線性表,該端稱為棧的頂端。

棧頂(Top):線性表允許插入和刪除的一端
棧底(Bottom):固定的,不允許進(jìn)行插入和刪除的一端

2 棧的基本操作

從棧頂刪除最后一個(gè)元素的操作,稱為出棧。
插入元素到棧頂?shù)牟僮?#xff0c;稱為入棧。

對(duì)于向上生成的堆棧:

入棧口訣:堆棧指針top“先壓后加” : S[top++]=x
出棧口訣:堆棧指針top “先減后彈” : e=S[--top]

top==-1 為空則棧空
top==maxsize-1為真則棧滿

3 順序棧代碼實(shí)現(xiàn)

#include <stdio.h> #include <stdlib.h> #define MAXSIZE (20)typedef int ElementType; typedef struct SqStack {ElementType data[MAXSIZE];int top; } *Stack;Stack InitStack(void) //初始化棧 {Stack s = (Stack)malloc(sizeof(struct SqStack));s->top = -1;return s; }void Push(Stack s, ElementType e) //壓棧,將元素e插入到棧S中,作為S的新棧頂 {if (s->top == MAXSIZE - 1) { //棧滿return;}s->top++;s->data[s->top] = e; }void Pop(Stack s, ElementType *e) //出棧,若棧S不為空,則刪除棧頂元素 {if (s->top == -1) { //棧空return;}*e = s->data[s->top];s->top--; }void PrtStack(Stack s) {for (int i = 0; i <= s->top; i++) {printf("%d ", s->data[i]);}printf("\n"); }int main(void) {ElementType e;Stack s = InitStack();PrtStack(s);printf("please input a element :");scanf("%d", &e);Push(s, e);PrtStack(s);Pop(s, &e);printf("Pop a element : %d", e);return 0; }

總結(jié)

以上是生活随笔為你收集整理的顺序栈的介绍及实现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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