博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
栈的基本操作
阅读量:4134 次
发布时间:2019-05-25

本文共 2469 字,大约阅读时间需要 8 分钟。

#include "stdafx.h"#include
#include
#define OK 1#define TRUE 1#define ERROR 0#define FALSE 0#define overflow -2#define STACK_INTT_SIZE 100#define STACK_INIT_INCREMENT 20#define Status int#define ElemType inttypedef struct { ElemType *base,*top; int stackSize;}SqStack;/* 栈的操作 Status InitStatck(SqStack &s) 初始化栈 Status DestoryStatck(SqStack &s) 销毁栈 Status ClearStack(SqStack &s) 清除栈 bool StackEmpty(SqStack s) 栈是否为空 int StackLength(SqStack s) 栈的长度 Status GetTop(SqStack s,SElemType &e) 得到栈顶 Status Push(SqStack &s,SElemType e) 压栈 Status Pop(SqStack &s,SElemType &e) 出栈 void DisplayStack(SqStack s); 显示栈内的元素 */Status InitStatck(SqStack &s){ s.base=(ElemType*)malloc(STACK_INTT_SIZE*(sizeof(ElemType))); if(!s.base) return ERROR; else s.top=s.base; s.stackSize=STACK_INTT_SIZE;}Status DestoryStatck(SqStack &s){ s.top=s.base; free(s.base); s.base=NULL; s.top=NULL; return OK; }bool StackEmpty(SqStack s){ if(s.base==s.top) return TRUE; else return FALSE; }int StackLength(SqStack s) { if(s.base=s.top) return ERROR; else return (s.top-s.base); }Status GetTop(SqStack s,ElemType &e){ if(StackEmpty(s)) { printf("This stack is empty."); return ERROR; } else { s.top--; e=*s.top; return OK; }}Status Push(SqStack &s,ElemType e){ if(StackLength(s)==STACK_INTT_SIZE) { ElemType*temp=(ElemType*)realloc(s.base,(STACK_INTT_SIZE+STACK_INIT_INCREMENT)*(sizeof(ElemType))); if(!temp) return ERROR; s.base=temp; s.top=s.base+STACK_INTT_SIZE; s.stackSize=STACK_INTT_SIZE+STACK_INIT_INCREMENT; *(s.top++)=e; return OK; } else { *s.top=e; s.top++; return OK; }}Status Pop(SqStack &s,ElemType &e){ if(StackEmpty(s)) { printf("This stack is empty."); return ERROR; } else { e=*(--s.top); return OK; }}Status ClearStack(SqStack &s){ s.top=s.base; s.stackSize=0; return OK; }void DisplayStack(SqStack s){ if(StackEmpty(s)) exit(-1); while(s.top!=s.base) printf("%d\n",*(--s.top));}int _tmain(int argc, _TCHAR* argv[]){ SqStack statck; InitStatck(statck); for(int i=0;i<5;i++) { if(Push(statck,i)) printf("%d is push in this statck success!\n",i); else printf("/n/thappen a error\n\t"); } DisplayStack(statck);//显示栈内的元素 int tem; printf("now i will print this top of statck !\n"); GetTop(statck,tem); printf("%d is top of this statck\n",tem); DestoryStatck(statck); system("pause"); return 0;}

转载地址:http://kdsvi.baihongyu.com/

你可能感兴趣的文章
解决nutch搜不到结果
查看>>
从零开始搭建nutch搜索引擎
查看>>
C++默认参数
查看>>
正则表达式中有用但很少用的语法
查看>>
Vim 的 XML 文档编辑插件——xml.vim
查看>>
vim帮助文档无法跳转的问题
查看>>
vim常用快捷键及设置
查看>>
数据挖掘十大经典算法(6) PageRank
查看>>
数据挖掘十大经典算法(7) AdaBoost
查看>>
数据挖掘十大经典算法(9) 朴素贝叶斯分类器 Naive Bayes
查看>>
数据挖掘十大经典算法(10) CART: 分类与回归树
查看>>
初探数据挖掘中的十大经典算法
查看>>
android- ViewPager的跳转Fragment
查看>>
android-Banner控件的简单轮播图
查看>>
android-数据存入SP SP读取数据(简单案例)
查看>>
android-创建数据库存入数据,数据库数据的增删改查
查看>>
dccker-maven插件出现“Failed to execute goal com.spotifydocker-maven-plugin0.4.13....Permission den问题
查看>>
Java内存模型及其原理
查看>>
synchronized的原理及应用
查看>>
探索大数据基础设施容器化 | StartDT Tech Lab 04
查看>>