数据结构之栈的push与pop操作(顺序存储结构的c实现)
来源:互联网 发布:游戏超人软件 编辑:程序博客网 时间:2024/04/25 07:48
栈( stack )是限定仅在表尾进行插入和删除操作的线性表。
#include <stdio.h>#include <stdlib.h>//栈的顺序存储结构,用一维数组实现#define OK 1#define ERROR -1#define TRUE 1#define FALSE 0#define MAXSIZE 10typedef int Status;typedef int ElemType;typedef struct { ElemType data[MAXSIZE]; int top;//栈顶指针}Stack;//1. 初始化Status InitStack(Stack *S){ int i; for(i=0;i<MAXSIZE;i++) S->data[i]=NULL; S->top=-1; return OK;}//2. 创建一个长度为n的堆栈Status CreateStack(Stack *S,int n){ if(n>MAXSIZE || n<1){ printf("输入长度有误!\n"); return ERROR; } srand(time(0)); int i; for(i=0;i<n;i++){ S->data[i]=rand()%100+1; } S->top=n-1; return OK;}//3. 压栈操作Status push(Stack *S,ElemType e){ if(MAXSIZE-1==S->top){ printf("栈已满\n"); return ERROR; } //栈顶指向的元素有值 ++(S->top); S->data[S->top]=e; return OK;}//4. 出栈Status pop(Stack *S,ElemType *e){//将栈顶元素出栈,传给e if(-1==S->top){ printf("栈为空!\n"); return ERROR; } *e=S->data[S->top]; --(S->top); return OK;}int main(){ Stack S; int i,n,e; if(OK!=InitStack(&S)){ printf("初始化失败!"); return ERROR; } printf("输入初始化栈的长度n="); scanf("%d",&n); if(OK==CreateStack(&S,n)){ for(i=0;i<=S.top;i++){ printf("%d\t",S.data[i]); } } printf("\n输入想要插入栈的值"); while(1==scanf("%d",&e)){ if(ERROR==push(&S,e)){ break; }else{ for(i=0;i<=S.top;i++) printf("%d\t",S.data[i]); } } printf("\n接下来测试出栈!栈中的元素依次出栈\n"); while(OK==pop(&S,&e)){ getchar(); printf("%d\t",e); } return 0;}
0 0
- 数据结构之栈的push与pop操作(顺序存储结构的c实现)
- 两个栈实现队列的pop与push操作
- 数据结构--C语言实现栈的顺序存储结构
- 数据结构之---c语言实现栈的顺序存储
- 定义栈的数据结构在Theta(1)时间复杂度内实现min,pop,push操作
- 栈的顺序存储结构与操作
- 栈的顺序存储结构与操作
- 数据结构与算法-线性表顺序存储结构插入操作的实现
- 数据结构与算法-线性表顺序存储结构删除操作的实现
- 实现pop push min操作时间复杂度为O(1)的栈结构
- 数据结构与算法分析之顺序存储结构的建立,插入和删除操作
- 栈的顺序存储结构的相关操作(数据结构)
- 数据结构:栈的顺序结构及实现(C++)
- 栈的push、pop序列[数据结构]
- 8086CPU的栈操作和PUSH与POP
- 进击的数据结构三之栈的顺序存储结构
- [数据结构][C语言]图的基本介绍和操作实现之图的存储结构
- 数据结构——线性结构(2)——链栈中的push和pop操作
- hive数据导入导出
- Leetcode 动态规划 Climbing Stairs
- hibernate你懂吗?
- Oracle官方并发教程(2)
- 收到CSDN寄来的杂志和T恤衫
- 数据结构之栈的push与pop操作(顺序存储结构的c实现)
- 清浮动的方法
- CGContextAddArcToPoint和CGContextAddArc
- 关于传递参数时值变化的问题
- 转屏与异步任务
- 第一次做题笔记
- &、*、[ ]
- Easyui
- 记录开发过程中遇到的bugs&解决方法