数据结构示例之使用链表模拟栈
来源:互联网 发布:ubuntu tty7 编辑:程序博客网 时间:2024/05/24 05:17
以下是“使用链表模拟栈”的简单示例:
1. 用c语言实现的版本
#include<stdio.h>#include<stdlib.h>typedef char datatype;typedefstruct node{datatype data;struct node *next;} stack;stack*m_stack = NULL;/* 创建链表,从表头插入新元素 */void creat(void);/* 使栈s为空 */void MakeNull();/* 判断栈是否为空 */bool Empty();//取出栈顶元素 int Top(datatype* value);//弹出栈顶元素void Pop();//入栈,在头部插入新元素void Push(datatype x);/* 创建链表,从表头插入新元素 */void creat(){char ch;printf("请输入字符序列:\n");ch = getchar();while (ch != '\n'){Push(ch);ch = getchar();}}/* 使栈s为空 */void MakeNull(){stack *p = m_stack;while (p != NULL){m_stack = m_stack->next;free(p);/*释放空间*/p = m_stack;}}/* 判断栈是否为空 */bool Empty(){return (m_stack == NULL);}//取出栈顶元素 int Top(datatype* value){if (Empty())/*s为空栈,直接跳出,提示出错信息*/{return -1;}else{*value = m_stack->data;return 1;}}//弹出栈顶元素void Pop(){stack *p;if (Empty()) /*s为空栈,直接跳出,提示出错信息*/{printf("不能弹出,栈为空.");}else{p = m_stack;;m_stack = m_stack->next;free(p);/*释放栈顶空间*/printf("弹出成功\n");}}//入栈,在头部插入新元素void Push( datatype x){stack *p;p = (stack*)malloc(sizeof(stack));p->data = x;p->next = m_stack;m_stack = p;}void main(){char m_top;/* 创建链表,从表头插入新元素 */creat();if (!Empty()) //判断栈是否为空{int res = Top(&m_top);if (res == -1){printf("栈为空,未能获取栈顶元素\n");}else{printf("栈顶元素为: %c\n", m_top);}Pop();}else{printf("栈为空\n");}MakeNull();}
运行结果如下图所示:
0 0
- 数据结构示例之使用链表模拟栈
- 数据结构示例之数组模拟多栈实现
- 数据结构示例之使用数组实现栈
- 数据结构示例之圆形队列模拟舞会
- 数据结构示例之链表拼接
- 简单数据结构之栈模拟
- 数据结构之广义表模拟
- 【Android开发】之【链表数据结构 源码示例】
- 数据结构示例之带头节点的双向循环链表
- 数据结构示例之由尾部插入新元素的链表
- 数据结构示例之查看链表元素是否存在
- 数据结构示例之带头节点的、单循环链表
- 数据结构示例之带头节点的双向循环链表
- 数据结构示例之用链表实现栈
- 数据结构之用栈模拟队列
- 使用LinkedList模拟栈数据结构的集合
- 数据结构之链表的使用
- 数据结构示例之数组翻转
- Linux Hadoop 2.7.3 集群部署
- JZOJ4830. 分组
- 20161030学习心得
- Spring+MyBatis框架中sql语句的书写,数据集的传递以及多表关联查询
- 正则表达式符号含义
- 数据结构示例之使用链表模拟栈
- 苏嵌1 16.10.30
- 使用PHP引用实现无限分类思路(非递归迭代)
- JSON数据格式删除问题
- Python初学第一篇
- bzoj1571 滑雪课
- HttpServletRequest中的数据
- leetcode 435. Non-overlapping Intervals
- Linux服务器安全加固(一)