C语言,简单栈的实现 Stack
来源:互联网 发布:杀破狼js被禁 编辑:程序博客网 时间:2024/04/20 15:13
/*implement a stack in c*/#define STACK_INIT_SIZE 10#define STACK_INCREMENT 2#include <stdio.h>#include <stdlib.h>#include <assert.h>typedef int ElemType;typedef int Status;typedef struct SqStack{ ElemType *base; ElemType *top; int stackSize;}SqStack;//traverse the stack from base to topvoid print(SqStack *s){ assert(s); ElemType *elem = s->base; if(s->base == s->top){printf("This is an empty stack!\n"); } for(elem ; elem != s->top ; elem++){printf("element is %d", *elem);printf("\n"); } }//init statck SqStack* InitStack(SqStack *s){ s = (SqStack*)malloc(sizeof(SqStack)); if(!s)exit(0); s->base = (ElemType*)malloc(STACK_INIT_SIZE*sizeof(ElemType)); s->top = s->base; s->stackSize = STACK_INIT_SIZE; printf("Init stack successfully!\n"); return s;} //free stackStatus FreeStack(SqStack *s){ if(!s){printf("Stack is null no need to free!\n");return 0; }else{free(s->base); free(s);return 1; }}//push element into stackStatus Push(SqStack *s, ElemType e){ assert(s); //stack is full, need more space if(s->top - s->base >= s->stackSize){s->base = (ElemType*)realloc(s->base, (s->stackSize + STACK_INCREMENT)*sizeof(ElemType)); if(!s->base){ printf("realloc failed!\n"); exit(1);}s->top = s->base + s->stackSize; s->stackSize += STACK_INCREMENT; }*(s->top) = e;++(s->top);return 1;}//pop out elem from stackStatus Pop(SqStack *s, ElemType *e){ assert(s); if(s->base == s->top){printf("It's a empty stack\n");return 0; } e = s->top; --(s->top); return 1;}void main(){ int i; SqStack *s; s = InitStack(s); for(i = 0 ; i < 20 ; i++){ int elem = rand()%100;Push(s,elem); } print(s); FreeStack(s);}
这是一个简单栈的实现,我是菜鸟写的不好,大家轻拍。我写在空间里的文章,都是抱着学习的态度来的,把自己的想法写下来,如果哪位大牛看出了问题,我是非常乐意求教的。
Thank you all!
- C语言,简单栈的实现 Stack
- c语言栈Stack简单实现
- C语言Stack简单实现
- 动态栈Stack的C语言实现
- 栈(Stack)的C语言实现
- 栈(Stack) C 语言实现
- c语言 ---- Stack实现
- C语言实现stack模板
- stack的简单实现
- C语言实现一个简单的栈
- [数据结构]栈的C语言简单实现
- 栈(stack)C语言链表实现&&数组实现
- 十一、一个简单的栈stack实现
- [leetcode]Min Stack (获取栈的最小元素C语言实现)
- C++:栈(stack)的模板类实现
- STL 简单 stack 的实现
- 一个简单的Stack实现
- 自己实现简单的Stack
- 奥运小知识(1)
- php memcache手册
- CPU上下文切换频繁引起load偏高,TPS不稳定
- JSP 中使用EL遍历MAP .
- SED 跨行替换
- C语言,简单栈的实现 Stack
- 软件开发者面试百问
- vs2010生成mfc无法标记菜单
- Find Key for VMware
- Log4Net 开发文档
- UITableViewCell的选中时的颜色设置
- hadoop streaming 多路输出
- 项目管理心得
- N3顽固单词