数据结构基础【06】栈的链式实现
来源:互联网 发布:centos切换中文乱码 编辑:程序博客网 时间:2024/05/22 15:10
操作定义
初始化:InitStack
销毁: DestroyStack
清除: ClearStack
判空:StackEmpty
返回长度:StackLength
得到栈顶:GetTop
入栈:Push
出栈:Pop
遍历:StackTraverse
实现
#include <stdio.h>#include <stdlib.h>#define MAXSIZE 100 //顺序表可能达到的最大长度#define OK 1#define ERROR 0#define OVERFLOW -2//结构定义typedef struct StackNode{ int data; struct StackNode *next;} StackNode, *LinkStack;//初始化int InitStack(LinkStack &S){ S = NULL; return OK;}//入栈int Push(LinkStack &S, int e){ LinkStack p = new StackNode; p->data = e; p->next = S; S = p; return OK;}// 销毁int DestroyStack(LinkStack &S){ LinkStack p; while (S) { p = S; S = S->next; delete p; } return OK;}//请空int ClearStack(LinkStack &S){ S->next = NULL; return OK;}int StackEmpty(LinkStack S){ if (S->next == NULL) return 1; else return 0;}int StackLength(LinkStack S){ int length = 0; while(S->next != NULL) { length++; S = S->next; } return length;}//出栈int Pop(LinkStack &S, int &e){ LinkStack p; if (S == NULL) return ERROR; e = S->data; p = S; S = S->next; delete p; return OK;}//取栈顶元素int GetTop(LinkStack S){ if (S != NULL) { return S->data; }}void print(LinkStack S){ while(S) { printf("%d->",S->data); S=S->next; }}int main(){ int j; LinkStack s; int e; if (InitStack(s) == OK) for (j = 1; j <= 12; j++) { Push(s, j); } printf("栈中的元素依次为:"); print(s); printf("\n"); Pop(s, e); printf("弹出的栈顶元素 e=%d\n", e); printf("栈空否:%d(1:是 0:否)\n", StackEmpty(s)); e=GetTop(s); printf("栈顶元素 e=%d 栈的长度为%d\n", e, StackLength(s)); ClearStack(s); printf("清栈后,栈空否:%d(1:空 0:否)\n", StackEmpty(s)); DestroyStack(s); print(s); return 0;}
阅读全文
0 0
- 数据结构基础【06】栈的链式实现
- 数据结构基础(13) --链式栈的设计与实现
- 数据结构基础(13) --链式栈的设计与实现
- 数据结构基础(13) --链式栈的设计与实现
- 数据结构基础【08】队列的链式实现
- 数据结构-链式栈的实现
- 数据结构---栈的链式实现
- 数据结构-->栈的链式实现
- 【数据结构基础】栈的链式存储结构
- 数据结构双语课->栈的链式实现
- 数据结构和算法--栈的链式实现
- 数据结构基础(14) --链式队列的设计与实现
- 数据结构基础(14) --链式队列的设计与实现
- 数据结构基础(14) --链式队列的设计与实现
- [数据结构]链式队列的实现。
- 数据结构-链式队列的实现
- 数据结构---队列的链式实现
- 数据结构 - 队列的链式实现
- 剑指offer中 与链表有关的编程练习题 Java编码
- Linux下,tomcat随系统自启
- android 渐变的半圆进度条
- php中如何在同一页面下接收表单数据
- 如何有效地记忆与学习-提取
- 数据结构基础【06】栈的链式实现
- SQL:查找一个表中存在而另一个表中不存在的记录
- javascript中的循环语句
- Linux命令
- 邮件营销个性化进程:数据标签化管理下的多元交互场景
- SQL SERVER 中is null 和 is not null 将会导致索引失效吗?
- bootstrap table 中自定义修改和删除操作
- CODE[VS] 1001 舒适的路线 (kruskal)
- USB协议架构及驱动架构