栈的顺序表示和实现
来源:互联网 发布:cnc编程电脑配置 编辑:程序博客网 时间:2024/05/17 10:41
#include <stdio.h>#include <stdlib.h>#define MAX 20typedef int Elemtype;//必须加上;//定义顺序栈的储存结构typedef struct{ Elemtype stack[MAX]; int top;}SqStack;//初始化void InitStack(SqStack *p){ if(!p) printf("内存分配失败!"); p->top=-1;}//入栈void Push(SqStack *p,Elemtype x){ if(p->top<MAX-1) { p->top=p->top+1;//??????????????????????? p->stack[p->top]=x; } else printf("Overflow!\n");}//出栈Elemtype Pop(SqStack *p){ Elemtype x; if(p->top>=0) { x=p->stack[p->top]; printf("以前的栈顶数据元素%d已经被删除!\n",p->stack[p->top]); p->top=p->top-1; return x; } else { printf("underflow!\n"); return 0; }}//获取栈顶元素Elemtype GetTop(SqStack *p){ Elemtype x; if(p->top>=0) { x=p->stack[p->top]; printf("\n栈顶元素为:%d\n",x); return x; } else { printf("Underflow!\n"); return 0; }}//遍历void OutStack(SqStack *p){ int i; printf("\n"); if(p->top<0) printf("这是一个空栈!"); printf("\n"); for(i=p->top;i>=0;i--) printf("第%d个元素是: %5d\n",i,p->stack[i]);}//z置空栈void setEmtpy(SqStack *p){ p->top=-1;}void main(){ SqStack *q; int cord; Elemtype a; printf("\n第一次使用必须初始化\n"); do{ printf("\n\n"); printf("\n-------------主菜单-------------\n"); printf("\n 1.初始化顺序栈 \n"); printf("\n 2.插入一个元素\n"); printf("\n 3.删除栈顶元素\n"); printf("\n 4.取栈顶元素\n"); printf("\n 5.置空顺序栈\n"); printf("\n 6.结束程序运行\n"); printf("\n---------------------------------\n"); printf("\n请输入你的选择(1.2.3.4.5.6)\n"); scanf("%d",&cord); switch(cord) { case 1:{ q=(SqStack *)malloc(sizeof(SqStack)); InitStack(q); OutStack(q); }break; case 2:{ printf("请输入要插入的元素:a="); scanf("%d",&a); Push(q,a); OutStack(q); }break; case 3:{ Pop(q); OutStack(q); }break; case 4:{ GetTop(q); OutStack(q); }break; case 5:{ setEmtpy(q); printf("\n顺序栈已被置空!、\n"); OutStack(q); }break; case 6: { exit(0); } } }while(cord>0&&cord<=6);}
0 0
- 顺序栈的表示和实现
- 顺序栈的表示和实现
- 栈的顺序表示和实现
- 栈的顺序表示和实现
- 栈的顺序表示和实现
- 栈的顺序表示和实现(数据结构)
- 栈的顺序表示和实现
- 栈的顺序表示和实现
- 栈的顺序表示和实现
- 顺序栈的表示和实现
- 顺序栈的表示和实现
- 重温数据结构:栈的顺序表示和实现与栈的链式表示和实现
- 2007.08.27栈的表示和实现之顺序栈
- 数据结构(3):顺序栈的表示和实现
- c语言顺序栈的表示和实现
- 线性表的顺序表示和实现
- 线性表的顺序表示和实现
- 线性表的顺序表示和实现
- 版本控制-SVN&GIT
- 文章标题
- 如何看这个守护进程实例?????
- 黑马程序员——多线程
- mysql 学习记录(十三)--事务与表锁
- 栈的顺序表示和实现
- ByteBuffer.allocate()与ByteBuffer.allocateDirect()方法的区别。
- iOS网络编程 - 2
- Dubbo入门实例
- Fragment之间的通信
- hibernate编程中的一个错误及成因
- 网络时代如何尽量保证自己不被骗?(二)一个诈骗短信的例子
- Java核心技术第11章(1)
- 栈的链式实现