利用静态数组实现栈 c语言
2015-08-02 01:10
399 查看
#include<stdio.h> #include<malloc.h> //栈的大小 #define MaxSize 10 //数据类型 #define STACK_TYPE int typedef struct Stack{ STACK_TYPE data[MaxSize]; int top; }STACK,* PSTACK; //是否为空 bool isEmpty(PSTACK); //是否满 bool isFull(PSTACK); //初始化栈 PSTACK initial(PSTACK); //遍历栈 void traverse(PSTACK); //出栈 int pop(PSTACK); //入栈 bool push(PSTACK,int); int main(void){ PSTACK pStack ; pStack = initial(pStack); push(pStack,2); push(pStack,4); push(pStack,7); push(pStack,9); push(pStack,5); push(pStack,6); STACK_TYPE a = pop(pStack); printf("出栈的值为%d\n",a); a = pop(pStack); printf("出栈的值为%d\n",a); traverse(pStack); } PSTACK initial(PSTACK pStack){ pStack = (PSTACK)malloc(sizeof(STACK)); if(pStack==NULL){ return false; } pStack->top = -1; //printf("%d",pStack->top); return pStack; } void traverse(PSTACK pStack){ int i; for(i=0;i<((pStack->top+1));i++){ printf("%d\n",pStack->data[i]); } } bool push(PSTACK pStack,STACK_TYPE val){ if(isFull(pStack)){ return false; }else{ pStack->data[pStack->top+1]=val; pStack->top++; return true; } } STACK_TYPE pop(PSTACK pStack){ STACK_TYPE temp; if(isEmpty(pStack)){ exit(-1); }else{ temp = pStack->data[pStack->top]; pStack->top--; return temp; } } bool isFull(PSTACK pStack){ if(pStack->top==MaxSize){ return true; }else{ return false; } } bool isEmpty(PSTACK pStack){ if(pStack->top==-1){ return true; }else{ return false; } }
相关文章推荐
- 用PS实现纹理浮雕效果代码
- 用vbs实现cmd功能的代码
- 用双网卡实现三机互联
- Lua和C语言的交互详解
- Lua教程(七):数据结构详解
- 解析从源码分析常见的基于Array的数据结构动态扩容机制的详解
- C#中实现判断某个类是否实现了某个接口
- C#数据结构揭秘一
- DL.DT.DD实现左右的布局简单例子第1/2页
- 关于C语言中参数的传值问题
- 深入C++中API的问题详解
- 基于C语言string函数的详解
- C语言内存对齐实例详解
- C++基于栈实现铁轨问题
- c语言实现的带通配符匹配算法
- C语言实现顺序表基本操作汇总
- 数据结构之Treap详解
- 探讨C语言的那些小秘密之断言
- C语言实现BMP转换JPG的方法
- 深入探讨C语言中局部变量与全局变量在内存中的存放位置