栈基本操作的C语言实现(附源代码已测试)
来源:互联网 发布:网络课程怎么上 编辑:程序博客网 时间:2024/05/29 04:02
栈基本操作的C语言实现
/////////////////////////////////// 作者:happy_fun //// 栈基本操作的C语言实现 //// 时间:2011年11月19号 //// 未经作者允许不得转载! ///////////////////////////////////#include<stdio.h>#include<malloc.h>#include<stdlib.h>#define STACK_INIT_SIZE 100#define STACKINCREACE 10////////////////////////////////typedef struct SElemType{char data;}elemtype;typedef struct SqStack{elemtype *base;//base是变量名字,elemtype *表示base只能存储elemtype类型的变量的地址//int *表示存储整型变量地址elemtype *top;//top是变量名字,elemtype *表示top只能存储elemtype类型的变量的地址,指针就是地址,地址就是指针!int strcksize;}stack,*pstack;////////////////////////////////void main(){int Push(stack *s,elemtype e);int InitStack(stack *s);elemtype Pop(stack *s,elemtype e);elemtype GetTop(stack *s,elemtype e);int StackLength(stack *s);int a;stack s;elemtype e,del;e.data='T';if(InitStack(&s)==1)printf("构造空栈成功!\n\n");if(Push(&s,e))printf("压栈成功!\n\n");printf("返回的栈顶元素为:%c\n\n",GetTop(&s,e));printf("删除的栈顶元素为:%c\n\n",Pop(&s,del));printf("该栈的长度为:%d\n\n",a=StackLength(&s));}//////////////////////////////////构造空栈int InitStack(stack *s)//s是变量名,stack *表示s只能存储stack类型的变量地址{s->base=(elemtype *)malloc(STACK_INIT_SIZE*sizeof(elemtype));s->top=s->base; s->strcksize=STACK_INIT_SIZE;return 1;}/////////////////////////////////将元素e压入栈int Push(stack *s,elemtype e){if(s->top-s->base>=s->strcksize)//栈满追加空间{s->base=(elemtype *)realloc(s->base,(s->strcksize+STACKINCREACE)*sizeof(elemtype));s->strcksize=s->strcksize+(s->strcksize+STACKINCREACE);}if(!s->base)exit(0);*(s->top)=e;s->top++;printf("分配的存储空间为:%d\n",s->strcksize);return 1;}////////////////////////////////删除栈顶元素elemtype Pop(stack *s,elemtype e){if(s->top==s->base){printf("出错!\n");exit(0);}s->top--;e=*(s->top);printf("删除栈顶元素成功!\n");return e;}////////////////////////////////用e返回栈顶元素elemtype GetTop(stack *s,elemtype e){if(s->top==s->base){printf("Error!\n");exit(0);}s->top=s->top-1;e=*(s->top);s->top=s->top+1;return e;}///////////////////////////////返回栈的元素个数,即栈的长度int StackLength(stack *s){int length;length=s->strcksize;return length;}
第一次发帖,数据结构中栈的基本操作的实现,欢迎大家指导!
- 栈基本操作的C语言实现(附源代码已测试)
- 队列基本操作的C语言实现(附源代码已测试)
- C语言实现栈的基本操作
- 链栈的基本操作实现(c语言)
- C语言的鼠标制作(附源代码)
- C语言实现单链表的基本操作
- C语言实现无头链表的基本操作
- 字符串的基本操作,c语言实现
- 单链表的基本操作c语言实现
- C语言实现单链表的基本操作
- 单链表的基本操作C语言实现
- C语言 栈的基本操作 栈的实现
- 数据结构括号匹配(附源代码已测试)
- 用C语言实现链栈的基本操作
- C语言实现顺序栈的基本操作
- C语言实现顺序栈的基本操作
- 算法与数据结构-栈的基本操作C语言实现
- C语言实现单链表(带头结点)的基本操作
- 我使用过的Linux命令之basename - 去掉文件名的目录和后缀
- c#锁屏
- 说说Android桌面(Launcher应用)背后的故事(四)——揭秘Workspace
- 嵌入式Linux知识:S3C2440上 MMC/SD卡驱动实例开发讲解
- Xen平台上的安全威胁总结
- 栈基本操作的C语言实现(附源代码已测试)
- SQLServer2005无日志文件附加数据库
- 操作系统及启动原理相关概念
- php安装注意事项
- xen虚拟化部署遇到的问题
- 《代码阅读方法与实践》读后感——磨刀不误砍柴工
- 关于XML <如何操作XML>
- java keytool 使用总结(转)
- Linux 常用的查看系统信息的命令