顺序栈与两栈共享空间-C语言实现

栈是一种只能允许在栈顶插入数据与删除数据的数据结构,其实这就是一种特殊的线性表,特殊在 只能在表尾进行增减元素,上代码

 

#include <stdio.h> #define MAXSIZE 20 //栈空间大小 typedef int SElemType; //元素类型 typedef int Status; //返回值类型 #define OK 1 //操作成功 #define ERROR 0 //操作失败 typedef struct //顺序栈的数据结构 { SElemType date[MAXSIZE]; //栈元素数据 int top; //栈顶指针 }SeqStack; //栈名 /*入栈操作*/ Status Push(SeqStack *S, SElemType e) { if(S->top == MAXSIZE-1) //判断栈是否已满 return ERROR; S->date[++S->top] = e; //栈顶指针加1,栈顶元素等于e return OK; } /*出栈操作*/ Status Pop(SeqStack *S, SElemType *e) { if(S->top == -1) //判断栈是否为空 return ERROR; *e = S->date[S->top--]; //将栈顶元素赋值与e,并将栈顶指针减1 return OK; } void main() { SeqStack S; //创建栈S S.top = -1; //栈顶指针为-1,栈为空 int e; //入栈与出栈的元素 while(true) { printf("请选择对顺序栈的操作:\n"); printf("1.入栈\n"); printf("2.出栈\n"); printf("3.退出\n"); int a; scanf("%d", &a); switch(a) { case 1: printf("请输入入栈的元素:"); scanf("%d", &e); if(Push(&S, e)) printf("入栈成功\n"); else printf("入栈失败\n"); break; case 2: if(Pop(&S, &e)) printf("出栈的元素为:%d\n",e); else printf("栈空\n"); break; case 3: return; default: printf("选择错误\n"); break; } } }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpfydd.html