麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

棧與隊(duì)列(一)進(jìn)出棧(含二轉(zhuǎn)十進(jìn)制棧應(yīng)用)

2019-11-14 09:01:41
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

一、棧相關(guān)定義(棧的順序存儲(chǔ)結(jié)構(gòu)(最常用))

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

棧頂:表尾棧底:表頭棧的插入操作:叫做進(jìn)棧(入棧,壓棧),類(lèi)似子彈放入彈夾的動(dòng)作棧的刪除操作:叫做出棧(彈棧),如同子彈出夾

空棧:棧中不含任何數(shù)據(jù),此時(shí)棧頂就是棧底,然后數(shù)據(jù)從棧頂進(jìn)入,頂?shù)追蛛x,棧容量變大。數(shù)據(jù)出棧時(shí)從棧頂彈出,棧頂下移,棧容量減小

二、(一幅圖理解棧頂指針和棧底指針?lè)謩e指向的位置(當(dāng)然這個(gè)指向只是我這里使用的方法))

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

三、創(chuàng)建一個(gè)棧

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

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

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

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

void Pop(sqStack *s,ElemType *e){  if(s->top==s->base){//棧已空了    return;  }  *e=*--(s->top); //先將指針s->top減1(位置的變化)后再取出具體數(shù)據(jù)內(nèi)容,再賦值給e。。。因?yàn)閠op指針指的位置是棧頂(可以想象本來(lái)?xiàng)m敽蜅5字赶蛲晃恢?,然后一個(gè)元素進(jìn)入頂?shù)追蛛x,棧頂指向的位置是沒(méi)有元素的,因?yàn)樽詈笠徊娇傄猻->top++,所以這里要取最后一個(gè)元素,首先得讓棧頂top指向這個(gè)元素,所以向前移動(dòng)以為即--)}

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

ClearStack(sqStack *s)(這個(gè)操作其實(shí)里面數(shù)據(jù)還是存在,只是我們看不到了,因?yàn)槲覀兏淖兞酥羔樀闹赶?{  s->top=s->base;}

六、銷(xiāo)毀一個(gè)棧

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

八、實(shí)例:二進(jìn)制轉(zhuǎn)化為十進(jìn)制(棧的思想,后進(jìn)先出)

/*************************************************************************    > File Name: 棧.c    > Author: geeker    > Mail: 932834897@QQ.com    > Created Time: 2017年02月04日 星期六 20時(shí)16分15秒 ************************************************************************/#include<stdio.h>#include <stdlib.h>#include "math.h"#define stacksize 20typedef char ElemType;//如果int就會(huì)把輸入的數(shù)據(jù)當(dāng)成整型,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不是指針),計(jì)算當(dāng)前容量{    return(s.top-s.base);//點(diǎn)是結(jié)構(gòu)不是指針}int main(){    ElemType c;    sqStack s;    int len,i,sum=0;    InitStack(&s);    PRintf("請(qǐng)輸入二進(jìn)制數(shù),輸入#符號(hào)表示結(jié)束!/n");    scanf("%c",&c);    while(c!='#'){//遇見(jiàn)#停止        Push(&s,c);//函數(shù)Push中s是指針,所以這里傳地址        scanf("%c",&c);    }    getchar();//把‘/n’從緩沖區(qū)去掉    len=StackLen(s);    printf("棧的當(dāng)前容量是%d/n",len);    for(i=0;i<len;i++){        Pop(&s,&c);//Pop函數(shù)中元素形參用指針,所以我們這里c傳地址給Pop        sum+=(c-48)*pow(2,i);    }    printf("轉(zhuǎn)化為十進(jìn)制數(shù)是:%d/n",sum);    return 0;}


發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 成人毛片免费播放 | www.成人免费 | 视频一区 日韩 | 亚洲 综合 欧美 动漫 丝袜图 | 国产成人综合在线观看 | 国产一区二区在线免费播放 | 国产成人自拍视频在线 | 久久久免费观看完整版 | 美女露100%无遮挡 | 青青青在线免费 | 在线成人免费网站 | 久草手机在线观看视频 | 日本在线一区二区 | 久久99精品久久久久久小说 | www.91sao| 久久免费视频5 | 看免费的毛片 | 久久久久国产一区二区三区不卡 | 国产精品.com | 黄色一级片免费观看 | a黄色片 | 欧美一极视频 | 毛片免费看网站 | 狠狠干五月天 | 久久精品中文字幕一区 | 欧美综合在线观看 | 亚洲骚图| 精品一区二区三区免费毛片 | 成码无人av片在线观看网站 | 羞羞视频2023 | 日本免费aaa观看 | 国产免费观看a大片的网站 欧美成人一级 | 成年免费在线视频 | 中文字幕在线播放第一页 | 欧美高清一级片 | 成人毛片免费视频 | 在线天堂中文在线资源网 | 国产乱色精品成人免费视频 | 国产一区二区三区在线免费观看 | 亚洲欧美国产精品va在线观看 | 黄视频网站免费观看 |