栈的链表实现
来源:互联网 发布:linux下的telnet 编辑:程序博客网 时间:2024/05/21 20:22
#include <stdio.h>#include<stdlib.h> #include <malloc.h>#define OK 1 #define ERROR -1 #define OVERFLOW -2 #define TRUE 1 #define FALSE 0 typedef int SElemType; //自定义数据类型,假定为整型typedef int Status;typedef struct SNode //单链表结点结构{ SElemType data; //结点数据域 SNode *next; //结点指针域 SNode *top; //栈顶指针}SNode,*SLinkStack;Status InitStack(SLinkStack &S);//创建一个空栈Status EmptyStack(SLinkStack S);//判断栈是否为空栈Status ClearStack(SLinkStack &S);//把栈置空Status DestroyStack(SLinkStack &S);//把栈销毁Status GetTop(SLinkStack S);//取栈顶元素Status Push(SLinkStack &S,SElemType e);//进栈Status Pop(SLinkStack &S);//出栈Status ShowStack(SLinkStack S);//遍历栈内所有元素 /*创建一个空栈*/Status InitStack(SLinkStack &S){S = (SLinkStack)malloc(sizeof(SNode));S->top = NULL;return OK;} //InitStack/*判断是否为空栈*/Status EmptyStack(SLinkStack S){if(S->top == NULL)return TRUE;elsereturn FALSE;}//EmptyStack/*将栈置空*/Status ClearStack(SLinkStack &S){S->top = NULL;return OK;}//ClearStack /*将栈销毁*/Status DestroyStack(SLinkStack &S){if(!EmptyStack(S)){S->top = NULL;free(S);}return OK; } //DestoryStack/*获取栈顶元素*/Status GetTop(SLinkStack S,SElemType &e){if(EmptyStack(S)){printf("当前栈为空\n");return ERROR; }e = S->top->data;return OK;}//GetTop /*插入元素e为栈顶元素*/Status Push(SLinkStack &S,SElemType e){SLinkStack p;p = (SLinkStack)malloc(sizeof(SNode));p->data = e;p->next = S->top; //替换栈顶元素 S->top = p;return OK; }//Push/*出栈*/Status Pop(SLinkStack &S,SElemType &e){if(EmptyStack(S)){printf("当前栈为空\n");return ERROR; }SLinkStack p;p = S->top;e = S->top->data;S->top = S->top->next;free(p);return OK;}//Pop/*遍历栈内所有元素*/Status ShowStack(SLinkStack S){SLinkStack p;if(EmptyStack(S)){printf("当前栈为空\n");return ERROR; }p = S->top;while(p->next != NULL){printf("%d ",p->data);p = p->next;}printf("%d\n",p->data); //打印最后一个元素return OK;} //ShoeStackint main(){SLinkStack S;SElemType e,m;int n;InitStack(S);printf("请输入元素个数:\n");scanf("%d",&n);for(int i=0;i<n;i++){scanf("%d",&m);Push(S,m);}printf("栈内元素为:\n");ShowStack(S);Pop(S,e);printf("出栈元素为%d\n",e);printf("栈内元素为:\n");ShowStack(S);return OK;}
0 0
- 栈模型的实现--链表实现
- 链表实现的栈
- 栈的链表实现
- 栈的链表实现
- 栈的链表实现
- 栈 链表的实现
- 栈的链表实现
- 栈的链表实现
- 栈的链表实现
- 栈-链表的实现
- 栈的链表实现
- 栈的链表实现
- 栈的链表实现
- 栈的链表实现
- 栈的链表实现
- 栈的链表实现
- 各种实现队列的问题:链表实现,栈实现队列及队列实现栈
- 栈的顺序表实现和链表实现
- centos 6.5安装caffe(cpu模式)
- Java实现算法导论中图的广度优先搜索(BFS)和深度优先搜索(DFS)
- 标准模板库2(STL)——迭代器
- oracle 数据库常用指令总结
- 蘑菇街 App 的组件化之路·续
- 栈的链表实现
- 分享Kali Linux 2016.2第41周镜像虚拟机
- 汇编基础知识学习
- lua源码剖析(二)
- iOS开发之上传应用至APP store - 加急审核, 本人亲测苹果加速审核一年不止两次,只要理由充分,是可以多次的 。不过尽量避免
- php扩展开发,不同扩展使用相同函数名
- php动态更改post_max_size, upload_max_filesize等值
- 发布网站端口连不上
- 面向对象(类和对象)