亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

棧與隊列(一)進出棧(含二轉十進制棧應用)

2019-11-14 09:01:41
字體:
來源:轉載
供稿:網友

一、棧相關定義(棧的順序存儲結構(最常用))

官方定義:棧是一個后進先出的線性表,它要求只在表尾進行刪除插入操作(特殊線性表,只能在表尾操作)

棧頂:表尾棧底:表頭棧的插入操作:叫做進棧(入棧,壓棧),類似子彈放入彈夾的動作棧的刪除操作:叫做出棧(彈棧),如同子彈出夾

空棧:棧中不含任何數據,此時棧頂就是棧底,然后數據從棧頂進入,頂底分離,棧容量變大。數據出棧時從棧頂彈出,棧頂下移,棧容量減小

二、(一幅圖理解棧頂指針和棧底指針分別指向的位置(當然這個指向只是我這里使用的方法))

typedef struct{  ElemType *base; //棧底指針  ElemType *top;  //棧頂指針  int maxsize;  //當前可使用最大容量}sqStack;

三、創建一個棧

#define stacksize 100 //初始化棧是100個空間initStack(sqStack *s){  s->base=(ElemType *)malloc(stacksize * sizeof(ElemType));//申請空間  if(!s->base) //看是否申請成功     exit(0);  s->top=s->base; //最開始棧頂就是棧底  s->maxsize=stacksize;//可用空間100}

四、入棧操作(向棧中存放數據)(在棧頂進行,每次向棧中壓入一個數據,top指針+1,直到棧滿)

void Push(sqStack *s,ElemType e){  if(s->top-s->base>=s->maxsize){//判斷是否棧大小大于最大容量      return;  }  *(s->top)=e;//放入數據  s->top++; //棧頂容量增加}

五、出棧操作(棧頂取出數據,棧頂指針下移,容量減1)

void Pop(sqStack *s,ElemType *e){  if(s->top==s->base){//棧已空了    return;  }  *e=*--(s->top); //先將指針s->top減1(位置的變化)后再取出具體數據內容,再賦值給e。。。因為top指針指的位置是棧頂(可以想象本來棧頂和棧底指向同一位置,然后一個元素進入頂底分離,棧頂指向的位置是沒有元素的,因為最后一步總要s->top++,所以這里要取最后一個元素,首先得讓棧頂top指向這個元素,所以向前移動以為即--)}

五、清空一個棧(就是將元素全部報廢,不是銷毀)(只要將s->top的內容賦值為s->base即可s->top等于s->base就表明??樟耍?/p>

ClearStack(sqStack *s)(這個操作其實里面數據還是存在,只是我們看不到了,因為我們改變了指針的指向){  s->top=s->base;}

六、銷毀一個棧

DestroyStack(sqStack *s){  int i,len;  len=s->maxsize;//先得到這個棧的容量  for(i=0;i<len;i++){ //迭代一個一個釋放掉內存,free用到stdlib.h頭文件   free(s->base);   s->base++;  }  s->base=s->top=NULL;  s->maxsize=0;}七、計算棧的當前容量(就是計算棧中元素的個數,因此只要返回s.top-s.base即可)(注意:S.top-s.base(不是指針指針是->)兩個地址相減就是中間元素的個數,但不能相加)(注意:棧的最大空間s.maxsize是該棧占據內存空間的大小,與棧的當前容量(當前存放了多少數據)不是一個概念)
int StackLen(sqStack s){  return(s.top-s.base);}

八、實例:二進制轉化為十進制(棧的思想,后進先出)

/*************************************************************************    > File Name: 棧.c    > Author: geeker    > Mail: 932834897@QQ.com    > Created Time: 2017年02月04日 星期六 20時16分15秒 ************************************************************************/#include<stdio.h>#include <stdlib.h>#include "math.h"#define stacksize 20typedef char ElemType;//如果int就會把輸入的數據當成整型,char可以以ASCII存在typedef struct{    ElemType *base;    ElemType *top;    int maxsize;}sqStack;void InitStack(sqStack *s)//初始化{    s->base=(ElemType *)malloc(stacksize * sizeof(ElemType));    if(!s->base)        exit(0);    s->top=s->base;    s->maxsize=stacksize;}void Push(sqStack *s,ElemType e)//壓棧{    if(s->top-s->base>=s->maxsize)        return;    *(s->top)=e;    s->top++;}void Pop(sqStack *s,ElemType *e)//出棧{    if(s->top==s->base)        return;    *e=*--(s->top);}int StackLen(sqStack s)//(看清s不是指針),計算當前容量{    return(s.top-s.base);//點是結構不是指針}int main(){    ElemType c;    sqStack s;    int len,i,sum=0;    InitStack(&s);    PRintf("請輸入二進制數,輸入#符號表示結束!/n");    scanf("%c",&c);    while(c!='#'){//遇見#停止        Push(&s,c);//函數Push中s是指針,所以這里傳地址        scanf("%c",&c);    }    getchar();//把‘/n’從緩沖區去掉    len=StackLen(s);    printf("棧的當前容量是%d/n",len);    for(i=0;i<len;i++){        Pop(&s,&c);//Pop函數中元素形參用指針,所以我們這里c傳地址給Pop        sum+=(c-48)*pow(2,i);    }    printf("轉化為十進制數是:%d/n",sum);    return 0;}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品都在这里| 91极品视频在线| 国产精品一区二区久久| 午夜免费久久久久| 国产精欧美一区二区三区| 2023亚洲男人天堂| 亚洲影院色无极综合| 久久夜色精品国产| 亚洲人成在线一二| 日韩暖暖在线视频| 91久久在线播放| 欧美成人一区二区三区电影| 日韩精品在线免费播放| 欧美激情国内偷拍| 亚洲第一国产精品| 欧美一级在线播放| 91干在线观看| 国语自产精品视频在免费| 亚洲一区二区福利| 欧美日韩美女在线| 久久天天躁狠狠躁夜夜躁| 狠狠综合久久av一区二区小说| 亚洲夜晚福利在线观看| 亚洲国产成人在线视频| 正在播放欧美视频| 国产精品99久久久久久久久久久久| 亚洲韩国欧洲国产日产av| 国产91对白在线播放| 亚洲精品久久久久中文字幕欢迎你| 国产一区二区欧美日韩| 国产精品入口免费视频一| www.亚洲成人| 富二代精品短视频| 高跟丝袜一区二区三区| 国产va免费精品高清在线观看| www.日韩.com| 91精品国产高清久久久久久久久| 日韩在线视频二区| 亚洲社区在线观看| 亚洲裸体xxxx| 亚洲精品美女在线观看播放| 国产精品久久在线观看| 久久久久久久久久av| 高清视频欧美一级| 亚洲美女免费精品视频在线观看| 国产区精品在线观看| 91精品国产高清久久久久久91| 成人欧美一区二区三区在线| 美女精品视频一区| 亚洲欧洲在线观看| 国产久一一精品| 精品国产乱码久久久久久婷婷| 精品国产鲁一鲁一区二区张丽| 亚洲成人激情在线观看| 欧美视频在线免费看| 一本一道久久a久久精品逆3p| 久久久精品视频成人| 欧美一区二区三区四区在线| 国产91露脸中文字幕在线| 日韩中文字幕在线视频播放| 韩国美女主播一区| 欧美插天视频在线播放| 日韩欧美主播在线| 国产亚洲aⅴaaaaaa毛片| 日韩av在线直播| 日韩成人av网址| 欧美黑人xxxx| 中文字幕av一区中文字幕天堂| 欧美性生交xxxxx久久久| 北条麻妃一区二区在线观看| 精品日本美女福利在线观看| 色综合久综合久久综合久鬼88| 国产亚洲成av人片在线观看桃| 在线日韩日本国产亚洲| 亚洲国产成人91精品| 亚洲日本欧美日韩高观看| 中文字幕在线日韩| 日韩在线视频导航| 91国产精品视频在线| 亚洲精品国产品国语在线| 国产欧美亚洲精品| 川上优av一区二区线观看| 亚洲国产精品va在线观看黑人| 久久精品中文字幕| 欧美日本黄视频| 日韩免费电影在线观看| 国产精品盗摄久久久| 久久久亚洲欧洲日产国码aⅴ| 日韩小视频在线观看| 亚洲精品第一页| 亚洲精品电影网在线观看| 久久99青青精品免费观看| 国产精品自产拍在线观| 成人免费看吃奶视频网站| 久久久精品免费视频| 日本在线观看天堂男亚洲| 欧美福利在线观看| 日韩美女写真福利在线观看| 欧美成年人视频网站欧美| 国产精品日韩欧美大师| 亚洲国产精品久久91精品| 欧美色欧美亚洲高清在线视频| 日韩视频免费大全中文字幕| 久久久国产视频| 欧美怡红院视频一区二区三区| 精品久久香蕉国产线看观看亚洲| 国产精品自拍小视频| 久久久久久亚洲精品| 国产在线不卡精品| 91亚洲永久免费精品| 91九色国产社区在线观看| 欧美成人中文字幕在线| 国产视频综合在线| 免费av一区二区| 一区二区在线免费视频| 日韩成人在线视频网站| 国产精品劲爆视频| 日韩精品有码在线观看| 国产成人综合精品| 成人字幕网zmw| 欧美激情一区二区三区久久久| 国产午夜一区二区| 亚洲第一天堂无码专区| 国产成人精品免高潮在线观看| 亚洲欧美综合区自拍另类| 亚洲免费精彩视频| 亚洲精品v天堂中文字幕| 最近日韩中文字幕中文| 国产人妖伪娘一区91| 国产精品一二三在线| 97在线视频免费播放| 欧美日韩国产999| 国产美女久久久| 久久久久久久97| 国产成人在线播放| 国产精品嫩草视频| 国产成人精品一区| 91天堂在线视频| 国产精品老牛影院在线观看| 亚洲国产私拍精品国模在线观看| 国产日韩欧美日韩| 91嫩草在线视频| 欧美激情一级精品国产| 欧美肥老妇视频| 久久精品99久久久香蕉| 91精品久久久久久久久久入口| 中文字幕精品久久| 91精品久久久久久久久久| 久久九九免费视频| 国产成人综合亚洲| 青草热久免费精品视频| 国产精品久久久久久久av电影| 欧美情侣性视频| 国产精品成人久久久久| 国产精品视频网址| 91久久精品日日躁夜夜躁国产| 欧美性猛交视频| 91久久久久久国产精品| 久久久久久久一区二区三区| 亚洲美女www午夜| 欧美高清不卡在线| 成人黄色在线播放| 国产午夜精品一区二区三区| 成人美女av在线直播|