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

首頁 > 編程 > C > 正文

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

2020-01-26 14:08:01
字體:
來源:轉載
供稿:網友

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;}

運行結果

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

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

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲人精选亚洲人成在线| 欧美黑人国产人伦爽爽爽| 国产主播欧美精品| 日韩av资源在线播放| 国产亚洲欧洲高清| 最近免费中文字幕视频2019| 久久亚洲精品视频| 久久成人国产精品| 日韩在线视频中文字幕| 成人精品久久一区二区三区| 国产在线精品播放| 精品国产91久久久| 亚洲影影院av| 久久频这里精品99香蕉| 91sa在线看| 日韩精品极品在线观看| 欧美日韩在线影院| 日本亚洲欧美成人| 国产精品视频一区国模私拍| 国产精品无av码在线观看| 久久99热这里只有精品国产| 欧美日韩成人在线播放| 日本精品久久电影| 日韩欧美a级成人黄色| 久久精品电影网站| 亚洲无限av看| 国产成人在线视频| 日韩精品高清视频| 国产男人精品视频| 奇门遁甲1982国语版免费观看高清| 韩国v欧美v日本v亚洲| 日产精品99久久久久久| 精品高清美女精品国产区| 91精品国产91久久久| 欧美综合第一页| 精品女同一区二区三区在线播放| 国产精品久久久久久婷婷天堂| 狠狠躁18三区二区一区| 色香阁99久久精品久久久| 一本色道久久综合狠狠躁篇的优点| 国产精品久在线观看| …久久精品99久久香蕉国产| 亚洲视频一区二区三区| 成人黄色网免费| 91人人爽人人爽人人精88v| 中文字幕亚洲一区| 国产91精品不卡视频| 中文国产成人精品久久一| 亚洲欧美日韩直播| 亚洲综合一区二区不卡| 日本一区二三区好的精华液| 精品人伦一区二区三区蜜桃免费| 不卡伊人av在线播放| 亚洲美女av黄| 国产精品video| 亚洲国产毛片完整版| 国产精品福利在线观看网址| 色狠狠久久aa北条麻妃| 午夜精品福利在线观看| 欧洲成人免费aa| 在线成人免费网站| 亚洲一区二区三区香蕉| 国产999在线观看| 成人精品视频99在线观看免费| 欧美在线观看网址综合| 亚洲视频在线免费观看| 欧美国产日产韩国视频| 亚洲最新视频在线| 日韩精品免费观看| 亚洲肉体裸体xxxx137| 另类专区欧美制服同性| 国产精品精品久久久久久| 欧美性生交xxxxxdddd| 亚洲免费小视频| 最新国产精品拍自在线播放| 色av吧综合网| 97精品国产97久久久久久春色| 午夜精品蜜臀一区二区三区免费| 欧美极品第一页| 日韩欧美中文字幕在线播放| 久久久亚洲天堂| 午夜剧场成人观在线视频免费观看| 亚洲综合第一页| 亚洲欧美三级伦理| 日韩av手机在线观看| 欧美裸体xxxx极品少妇软件| 国产精品男人的天堂| 国产精品爱久久久久久久| 成人黄色av播放免费| 中文字幕亚洲一区二区三区五十路| 97香蕉超级碰碰久久免费软件| 久色乳综合思思在线视频| 欧美日韩一区二区免费在线观看| 久久成人这里只有精品| 久久男人av资源网站| 欧美激情区在线播放| 欧美丝袜一区二区三区| 日日骚av一区| 日韩毛片在线看| 欧美日韩成人网| 91av国产在线| 亚洲福利视频免费观看| 日韩电影视频免费| 中文一区二区视频| 欧美野外猛男的大粗鳮| 久久高清视频免费| 国产日本欧美一区二区三区| 亚洲成人在线网| 456国产精品| 岛国av一区二区在线在线观看| 69**夜色精品国产69乱| 日韩在线视频线视频免费网站| 亚洲精品福利视频| 日韩免费av一区二区| 精品一区二区三区电影| 色吧影院999| 欧美一区二区三区精品电影| 久久亚洲国产精品成人av秋霞| 国产精品一区二区三区久久久| 欧美韩国理论所午夜片917电影| 久久久精品网站| 国产精品狠色婷| 日韩中文在线中文网三级| 精品久久久久久久久久久久久| 欧美激情欧美激情在线五月| 国产视频在线观看一区二区| 欧美在线视频观看免费网站| 久久久久久久av| 国产成人福利网站| 亚洲色在线视频| 日韩av电影免费观看高清| 欧美专区国产专区| 色噜噜狠狠色综合网图区| 激情av一区二区| 久久久久久久久久久免费| 久久久精品久久久久| 欧美激情精品久久久久久大尺度| 亚洲美女精品久久| 欧美午夜精品久久久久久人妖| 欧美成人久久久| 亚洲女人天堂网| 亚洲欧美制服中文字幕| 国产+人+亚洲| 久久精品国产成人精品| 日韩亚洲成人av在线| 欧美久久精品一级黑人c片| 精品国产依人香蕉在线精品| 亚洲日韩中文字幕在线播放| 欧美中在线观看| 亚洲视频电影图片偷拍一区| 欧美高清性猛交| 欧美日韩成人黄色| 欧洲成人午夜免费大片| 久久色免费在线视频| 亚洲va国产va天堂va久久| 日韩禁在线播放| 国产成人一区二区三区电影| 日韩欧美精品中文字幕| 亚洲无限av看| 成人免费高清完整版在线观看| 国产精品自产拍在线观看中文| 欧美高清视频在线观看| 最新的欧美黄色| 中文字幕在线亚洲|