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

首頁 > 編程 > C > 正文

C語言數據結構 棧的基礎操作

2020-02-24 14:25:16
字體:
來源:轉載
供稿:網友

堆棧是處理程序運行的一種方式,在C語言實現的堆棧代碼,今天就由武林技術頻道小編介紹C語言數據結構 棧的基礎操作吧,希望對你學習這方面知識有幫助。

C語言數據結構 棧的基礎操作

實現了棧的基本操作,包括入棧出棧,以及書上沒有寫的銷毀棧等操作,并對代碼進行了詳細的注釋

MyStack.h

/* * Include.h * * Created on: 2016.11.23 *   Author: Jack Cui */#ifndef MYSTACK_H_#define MYSTACK_H_#include <stdlib.h>#include <stdio.h>#include <malloc.h> /*棧(Stack)是限定僅在表尾進行插入或刪除操作的線性表**棧頂(top)和棧底(bottom)相等,代表為空棧***///SElemType是某個確定的、將由用戶自行定義的、含某個關系運算的數據對象typedef int SElemType;//函數結果狀態代碼#define TRUE    1  #define FALSE    0#define OK     1#define ERROR    0#define INFEASIBLE -1   //不可行#define MY_OVERFLOW -2   //溢出/**********棧的順序存儲表示**********/#define STACK_INIT_SIZE 100   //存儲空間初始分配量#define STACKINCREMENT 10   //存儲空間分配增量typedef struct{  SElemType *base;  //在棧構造之前和銷毀之后,base的值為NULL  SElemType *top;   //棧頂指針  int stacksize;   //當前已分配}SqStack;/**********基本操作的函數原型說明**********///構造一個空棧SStatus InitStack(SqStack &S);      //銷毀棧S,S不再存在Status DestroyStack(SqStack &S);//把S置為空棧Status ClearStack(SqStack &S);//若棧S為空棧,則返回TURE,否則返回FALSEStatus StackEmpty(SqStack S); //返回S的元素個數,即棧的長度int StackLength(SqStack S);//若棧不空,則用e返回S的棧頂元素,并返回OK;否則返回ERRORStatus GetTop(SqStack S, SElemType &e); //插入元素e為新的棧頂元素Status Push(SqStack &S, SElemType e);//若棧不空,則刪除S的棧頂元素,用e新棧頂的值,并返回OK;否則返回ERROR;Status Pop(SqStack &S, SElemType &e);//從棧底到棧頂依次對棧中每個元素調用函數visit();一旦visit()失敗,則操作失敗Status StackTraverse(SqStack S, Status(* visit)(SElemType));//visit()函數Status visit(SElemType e);//測試函數Status TestMyStack();#endif MYSTACK_H_

MyStack.c

#include "MyStack.h"Status InitStack(SqStack &S){  //構造一個空棧S  S.base = (SElemType *)malloc(STACK_INIT_SIZE * sizeof(SElemType));  if(!S.base){    //存儲分配失敗    printf("InitStack: malloc err/n");    exit(MY_OVERFLOW);  }  S.top = S.base;  S.stacksize = STACK_INIT_SIZE;  return OK;}//InitStackStatus DestroyStack(SqStack &S){  if(!S.base){    printf("DestroyStack: Stack does not exist/n");    exit(MY_OVERFLOW);  }//在調用malloc的時候,系統會記住你申請的這塊連續空間的起始地址以及這塊空間的大小,//釋放free的時候,只要把這個起始地址告訴系統,系統自然就知道要釋放多大的空間。  free(S.base);      S.top = NULL;  S.base = NULL;  S.stacksize = 0;  return OK;}//DestroyStackStatus ClearStack(SqStack &S){  if(!S.base){    printf("ClearStack: Stack does not exist/n");    exit(MY_OVERFLOW);  }  S.top = S.base;   return OK; }//ClearStackStatus StackEmpty(SqStack S){  if(S.top == S.base){    return TRUE;  }  else{    return FALSE;  }}//StackEmptyint StackLength(SqStack S){  return S.top - S.base;}//StackLengthStatus GetTop(SqStack S, SElemType &e){  ////若棧不空,則用e返回S的棧頂元素,并返回OK;否則返回ERROR  if(S.top == S.base){    printf("GetTop: Stack is empty/n");    return ERROR;  }  e = *(S.top - 1);  return OK;}//GetTopStatus Push(SqStack &S, SElemType e){  //插入元素e為新的棧頂元素  if(S.top - S.base >= S.stacksize){ //棧滿,追加存儲空間    S.base = (SElemType *)realloc(S.base, (S.stacksize + STACKINCREMENT) * sizeof(SElemType));    if(!S.base){      printf("Push: realloc error/n");    }    S.top = S.base + S.stacksize;    S.stacksize += STACKINCREMENT;  }  *S.top++ = e;    //*S.top = e; S.top++;  return OK;}//PushStatus Pop(SqStack &S, SElemType &e){  //若棧不空,則刪除S的棧頂元素,用e返回新棧頂的值,并返回OK,否則返回ERROR;  if(S.top == S.base){    printf("Pop: Stack is empty/n");    return ERROR;  }  e = *--S.top;    //S.top--; e = *S.top;  return OK;}//PopStatus StackTraverse(SqStack S, Status(* visit)(SElemType)){  while(S.top > S.base){    visit(*S.base++);   }   printf("/n");  return OK; }//StackTraverseStatus visit(SElemType e){  printf("%d ",e) ;  return OK;}//visitStatus TestMyStack(){  SElemType j;   SqStack s;   SElemType e;   if(InitStack(s) == OK)   for(j = 1; j <= 12; j++)   {     Push(s,j);   }   printf("棧中的元素依次為:");   StackTraverse(s,visit);   Pop(s, e);   printf("彈出的棧頂元素 e=%d/n", e);   printf("??辗瘢?d(1:是 0:否)/n", StackEmpty(s));   GetTop(s, e);   printf("棧頂元素 e=%d,棧的長度為%d/n", e, StackLength(s));   ClearStack(s);   printf("清棧后,棧是否為空:%d(1:空 0:否)/n",StackEmpty(s));   DestroyStack(s);   printf("銷毀棧后,s.top = %u s.base= %u s.stacksize=%d/n",s.top,s.base,s.stacksize);   return 0; }//TestMyStack//主函數int main(){  TestMyStack();  system("pause");  return 0;}

運行結果

以上這些是武林技術頻道小編給大家介紹的C語言數據結構 棧的基礎操作,希望對大家學習這方面知識有所幫助,更多相關信息,敬請留意js.Vevb.com。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
在线视频日本亚洲性| 国产精品成人一区二区三区吃奶| 久久五月天综合| 中文日韩在线视频| 欧美日韩在线一区| 久久久亚洲国产| 91香蕉嫩草神马影院在线观看| 日韩在线国产精品| 亚洲第一福利在线观看| 色噜噜狠狠色综合网图区| 日韩av资源在线播放| 亚洲qvod图片区电影| 国产小视频国产精品| 欧美日韩中文字幕| 欧美亚洲国产视频小说| 欧美精品videossex性护士| 在线视频一区二区| 欧美高清性猛交| 精品美女国产在线| 国产精品毛片a∨一区二区三区|国| 成人精品网站在线观看| 一级做a爰片久久毛片美女图片| 国产精品吴梦梦| 九九精品视频在线| 久久久久久久久久国产精品| 国内精品久久久久影院优| 欧美视频在线免费| 亚洲欧美第一页| 国产精品久久久久久久久久久久久| 91精品国产综合久久香蕉| 国产成人精品国内自产拍免费看| 久久天堂电影网| 久久久免费精品视频| 欧美激情视频在线免费观看 欧美视频免费一| 亚洲欧美变态国产另类| 亚洲电影免费观看高清完整版在线观看| 日韩最新av在线| 国产在线精品一区免费香蕉| 国产一区二区在线免费视频| 精品小视频在线| 久久久免费观看| 亚洲免费福利视频| 国产91色在线播放| 亚洲性生活视频在线观看| 国产suv精品一区二区三区88区| 亚洲精品v天堂中文字幕| 欧美激情成人在线视频| 97人人模人人爽人人喊中文字| 日本韩国在线不卡| 91理论片午午论夜理片久久| 国产视频福利一区| 97香蕉超级碰碰久久免费软件| 国产精品成人一区二区三区吃奶| 久久久av电影| 正在播放欧美视频| 日韩精品中文在线观看| 日韩视频免费在线| 欧美日本中文字幕| 欧美精品福利视频| 亚洲第一在线视频| 国产91精品黑色丝袜高跟鞋| 亚洲免费精彩视频| 2020欧美日韩在线视频| 久久成人人人人精品欧| 亚洲一区亚洲二区亚洲三区| 国产精品ⅴa在线观看h| 亚洲国产欧美一区二区三区久久| www.日韩av.com| 亚洲国产精品大全| 亚洲国产精品中文| 国产精品国产三级国产专播精品人| 91成品人片a无限观看| 久久精品国产久精国产思思| 欧美精品电影免费在线观看| 欧美性猛交xxxxx免费看| 欧美日韩aaaa| 成人免费午夜电影| 91久久国产婷婷一区二区| 另类少妇人与禽zozz0性伦| 亚洲欧美资源在线| 亚洲在线免费观看| 久久久亚洲欧洲日产国码aⅴ| 羞羞色国产精品| 日韩av在线影院| 国产精品成人观看视频国产奇米| 91美女福利视频高清| 91黄色8090| 日本精品一区二区三区在线播放视频| 久久精品视频va| 国产精品久久久久av| 欧美成人性生活| 日韩电视剧免费观看网站| 日韩电影免费观看在线观看| 久久久精品一区二区三区| 亚洲色图五月天| 成人福利视频在线观看| 韩剧1988在线观看免费完整版| 色婷婷久久一区二区| 亚洲国产欧美久久| 色老头一区二区三区| www国产精品com| 亚洲丝袜一区在线| 精品国产欧美成人夜夜嗨| 亚洲精品视频中文字幕| 成人av色在线观看| 久久久av免费| 国产成人精品在线| 精品视频在线播放免| 日韩欧美在线网址| 热久久免费视频精品| 日韩电影免费观看在线观看| 国产精品女人久久久久久| 九九热视频这里只有精品| 亚洲人成网7777777国产| 亚洲bt天天射| 狠狠色狠狠色综合日日五| 色婷婷综合久久久久中文字幕1| 亚洲午夜精品久久久久久性色| 日韩久久精品成人| 黑人巨大精品欧美一区二区| 国产成人福利视频| 精品激情国产视频| 91欧美精品成人综合在线观看| 亚洲第一区第一页| 亚洲色图综合久久| 欧美色播在线播放| 免费91麻豆精品国产自产在线观看| 亚洲第一天堂无码专区| 国产在线拍揄自揄视频不卡99| 在线观看视频99| 丝袜亚洲欧美日韩综合| 欧美精品videos性欧美| 精品久久香蕉国产线看观看亚洲| 色偷偷噜噜噜亚洲男人的天堂| 欧美精品videosex极品1| 久久九九精品99国产精品| 一区二区三区视频观看| 国产欧美日韩亚洲精品| 日韩精品在线观看一区二区| 日韩免费观看av| 亚洲区一区二区| 国内精品久久久久久久| 精品少妇一区二区30p| 成人中文字幕+乱码+中文字幕| 91精品久久久久久久久久久久久| 成人黄色av播放免费| 精品免费在线观看| 久久精品视频网站| 欧美日韩日本国产| 欧美乱大交做爰xxxⅹ性3| 午夜精品久久久久久久男人的天堂| 国产精品高清在线观看| 国内精品久久久久久久| 国产亚洲欧洲高清一区| 欧美黄色片免费观看| 国产999在线观看| 97超碰国产精品女人人人爽| 欧美午夜精品久久久久久人妖| 亚洲精品国产精品乱码不99按摩| 中文字幕精品久久| 久久久久久亚洲精品中文字幕| 日韩免费精品视频| 国产精品福利小视频| 亚洲电影免费观看高清完整版在线观看|