代码写多还是会愈发的顺手。写这个示例时,主要的问题在于实现时节点和链表的表示指针有点混乱,不能够马上的反映出来。革命尚未成功,同志仍需努力啊!
写完之前的代码,停下来看了下别人前面内容的实现过程,对比发现结构还是比较混乱的。本例中将节点用结构体表示,包含两个数据成员,分别是数据域和指针域。然后将栈定义为一个模板类,包含两个私有成员,分别是栈的头指针和栈中元素的个数。将栈的基本功能函数声明在类公有成员。这样整体结构就完善许多。
栈的链式存储结构头文件
template<typename T> //结构体定义节点
struct Node
{
T data;
Node *next;
};
template<typename T>
class chStack
{
private:
Node<T> * top; //栈的头指针(栈顶指针)
int count; //栈的长度
public:
chStack(); //栈的构造函数
bool Push(T &e); //将元素e,压如栈
bool Pop(T &e); //将栈顶元素取出到e
bool isEmpty(); //判断栈是否为空
T &GetTop(); //得到栈的栈顶元素,并返回
int Length() const; //返回栈的长度
};
#pragma once
#ifndef STACK_H_
#define STACK_H_
template<ty

本文详细介绍了如何使用链式存储结构实现栈的数据结构。通过定义节点结构体和栈类,实现了栈的基本操作,包括压栈、弹栈、获取栈顶元素等。并通过一个实例展示了如何使用该栈类进行操作。
最低0.47元/天 解锁文章
768

被折叠的 条评论
为什么被折叠?



