顺序栈 ╰+攻爆jí腚メ 2022-08-25 05:27 156阅读 0赞 \#define OK 1 \#define ERROR 0 \#define TRUE 1 \#define FALSE 0 \#define INFEASIBLE -2 \#define OVERFLOW -1 \#define STACK\_INIT\_SIZE 15 \#define STACK\_INCREMENT 10 \#include \#include using namespace std; typedef int Status; //Status 相当于 int typedef struct Stack \{ int \* base; int \* top; int stacksize; \}SqStack; //\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*函数的声明\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* void InitStack(SqStack &S) //创建一个空栈 \{ S.base = (int \*)malloc(sizeof(int) \* STACK\_INIT\_SIZE); if(!S.base ) exit(OVERFLOW); //存储分配失败 S.top = S.base; S.stacksize = STACK\_INIT\_SIZE; int len; int \* p = S.base; cout<<"请输入初始栈的元素个数:"; cin>>len; cout<<"请输入"<<len<<"个元素,以空格隔开:"; while(len--) cin >> \*p ++; S.top = p; return ; \} Status StackEmpty(SqStack S)//判断是否为空 \{ if(S.top == S.base) \{ cout<<"栈为空!"<<endl; return OK; \} else return ERROR; \} void PrintStack(SqStack S)//输出当前顺序表 \{ int \* p = S.base ; cout<<"栈中的元素为:"; while( p != S.top ) cout<<\*p ++<<" "; cout<<endl; \} void Push(SqStack &S )//插入元素e为新的栈顶元素 \{ int e; cout<<"请输入要入栈的元素:"; cin>>e; if(S.top - S.base == S.stacksize ) \{ S.base = (int \*)realloc(S.base , sizeof(int)\* (S.stacksize + STACK\_INCREMENT)); if(!S.base) exit(OVERFLOW); S.top = S.base +S.stacksize; S.stacksize += STACK\_INCREMENT; \} \* S.top++ = e; \} void Pop(SqStack &S)//出栈,出栈元素为e \{ if(StackEmpty(S)) return ; cout<<"出栈成功!出栈元素为"<<\* --S.top<<endl; \} void StackLength(SqStack S)//返回栈的长度 \{ cout<<"栈的长度为:" <<S.top-S.base<<endl; \} void GetTop(SqStack S) \{ if(StackEmpty(S)) return; cout<<"栈顶元素为:"<< \*(S.top-1)<<endl; \} //\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*主函数\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* int main(void) \{ SqStack S;//定义一个栈 int door = 1,init = 0,num; while( door ) \{ printf("\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\\n"); printf("如要对栈进行操作,请输入各项前面相应的数字\\n"); printf("\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\\n"); printf("|1、初始化栈|\\n"); printf("|2、入栈|\\n"); printf("|3、出栈|\\n"); printf("|4、查看当前栈|\\n"); printf("|5、查看栈长度|\\n"); printf("|6、查看栈顶的元素|\\n"); printf("|0、退出|\\n"); printf("\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\\n"); cout<<" 请输入数字进行操作:"; cin>>num; if(num==0||num==1||num==2||num==3||num==4||num==5||num==6) \{ switch(num) \{ case 0: door = 0; break; case 1: InitStack(S); init = 1; break; case 2: if(init)\{ Push(S); break;\} cout<<"请先对顺序表进行初始化!"<<endl;break; case 3: if(init)\{Pop(S); break;\} cout<<" 请先对顺序表进行初始化!"<<endl;break; case 4: if(init)\{ PrintStack(S); break; \} cout<<" 请先对顺序表进行初始化!"<<endl;break; case 5: if(init)\{ StackLength(S); break;\} cout<<" 请先对顺序表进行初始化!"<<endl;break; case 6: if(init)\{ GetTop(S); break;\} cout<<" 请先对顺序表进行初始化!"<<endl;break; \} \} else \{ cout<<"输入不正确请重新输入!"<<endl; continue; \} \} return 0; \}
相关 顺序栈 \define OK 1 \define ERROR 0 \define TRUE 1 \define FALSE 0 \define INFEASIBLE - ╰+攻爆jí腚メ/ 2022年08月25日 05:27/ 0 赞/ 157 阅读
相关 顺序栈 2016年7月23日12:43:45 顺序栈的基本运算 include <stdio.h> define STICKSIZE 100 冷不防/ 2022年07月16日 13:29/ 0 赞/ 168 阅读
相关 顺序栈 转自http://blog.sina.com.cn/s/blog\_1513d729e0102wem6.html 顺序栈的实现(利用数组实现 ╰+哭是因爲堅強的太久メ/ 2022年07月15日 16:07/ 0 赞/ 176 阅读
相关 顺序栈 对全局变量有些依赖,要改进 include <iostream> using namespace std; typedef int elemType; 以你之姓@/ 2022年07月14日 07:23/ 0 赞/ 203 阅读
相关 顺序栈 顺序栈(C++) // //Description:顺序栈 // include <iostream> include <malloc 谁借莪1个温暖的怀抱¢/ 2022年06月18日 01:56/ 0 赞/ 155 阅读
相关 顺序栈 include<stdio.h> define maxsize 6 /顺序栈的容量/ typedef struct { int 「爱情、让人受尽委屈。」/ 2022年06月16日 13:15/ 0 赞/ 167 阅读
相关 顺序栈 include<stdio.h> define MAXSIZE 100 typedef struct{ int data[MAXSIZE]; 缺乏、安全感/ 2022年06月16日 03:21/ 0 赞/ 170 阅读
相关 顺序栈 //seqstack.h include<string.h> include<malloc.h> include<limits.h> incl 傷城~/ 2022年06月03日 20:39/ 0 赞/ 165 阅读
相关 顺序栈 栈: 限定仅在表尾进行插入和删除操作的线性表。因此,对于栈来说,表尾有其特殊含义,称为栈顶,相应地,表头称为栈底。不含元素的空表称为空栈。 系统管理员/ 2022年04月22日 03:06/ 0 赞/ 200 阅读
相关 顺序栈 / @author huihut @E-mail:huihut@outlook.com @version 创建时间:2016年9月9日 蔚落/ 2021年12月18日 05:07/ 0 赞/ 263 阅读
还没有评论,来说两句吧...