线性表之链栈
来源:互联网 发布:mac的ps和windows 编辑:程序博客网 时间:2024/06/11 08:07
基本思想:在单链表的基础上,限制某些操作,使之成为一种新的数据结构。只准在栈顶(单链表的第一个元素)进行操作。
优点:内存是动态分配的。
缺点:也是代码相对来说较为复杂。(比单链表简单很多)
C代码实现下载
C++代码实现下载
java代码实现下载
(备用下载地址)
我看有些书,都是定义两个结构体,我觉得这样反而让人头晕,转不过来,本来栈结构和队列结构就是数据结构中最简单的,没必要搞那么复杂。所以,我在单链表的基础上,只实现了入栈(相当于头添加),出栈(相当于删除节点),获取栈顶元素(相当于获取第一个节点,head->next)等功能。现在问题来了,用什么当作栈顶指针?当然是头节点了,这个就是现成的一直指向栈顶(第一个节点)的指针了。然后还有一个问题,用什么记录栈的大小呢?还记得head的数据域data是没有用到的吗?所以现在就是物尽其用的时候,直接利用head->data来记录栈的大小。如果是C++或者JAVA的话,记录栈大小就直接用一个成员变量就好。
实现的功能:
1.void InitStack(); 初始化栈
1).创建栈顶指针 top = new Node(); (就是头节点)
2).初始化栈大小 top->data = 0;
2.bool IsEmpty(); 栈是否为空
根据top->data的值来判断
3.int GetSize(); 获取当前栈的长度
直接返回top->data
4.void Push(T e); 入栈
就是头添加
示例代码:
Node<T>* node = new Node<T>(m_initValue); //创建一个新的节点 node->data = e; node->next = m_top->next; m_top->next = node; //让栈顶指针指向新的栈顶节点 ++m_count;
5.void Pop(); 出栈(不返回栈顶元素)
就是删除第一个节点
6.T PopE(); 出栈(返回栈顶元素)
7.T GetTop(); 获取栈顶元素
直接返回top->next->data
8.void Print(); 遍历栈
和单链表一样
9.void ClearStack(); 清空栈
挨个出栈就清空完了
线性表之顺序栈
线性表之双向链表
线性表之循环链表
线性表之单链表
线性表之顺序表
- 线性表之链栈
- 线性表之栈
- 线性表之栈
- 线性表之链表
- 线性表之链表
- 线性表之链表
- 线性表之链表
- 线性表之链表
- 线性表之链表
- 线性表之链表
- 线性表之链表
- 线性表之链表
- 线性表之链表
- 线性表之顺序栈
- 之线性链表小结
- 线性链表之123
- 数据结构之线性链表
- 数据结构之: 线性链表
- 欢迎使用CSDN-markdown编辑器
- Ajax 完整教程-(二)
- 四层网络模型和七层网络模型
- git的学习
- 如何修改matlab启动时默认的工作路径
- 线性表之链栈
- Python学习笔记-概述(1)
- 【Untiy&项目分享&项目讲解】UnitZ的敌人生成系统 1 敌人孵化器
- Java程序性能优化
- Python学习笔记-概述(2)
- 网关
- 4刀最多切割一个正方体为多少部分
- UML之用例图
- XML解析-PULL