博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
链栈之C++实现
阅读量:6258 次
发布时间:2019-06-22

本文共 1492 字,大约阅读时间需要 4 分钟。

          链栈是借用单链表实现的栈。其不同于顺序栈之处在于:

1、链栈的空间是程序运行期间根据需要动态分配的,机器内存是它的上限。而顺序栈则是

静态分配内存的。

2、链栈动态分配内存的特性使得它一般无需考虑栈溢出的问题。

          链栈的的组织结构如下图所示。容易发现其是架构的单链表的基础之上的。

 

              下面介绍下我用C++实现的链栈,VC6下调试。

1、文件的组织结构

 

2、ls.h链栈类的说明

#ifndef _LS_H_#define _LS_H_typedef int dataType;struct node                   //链栈节点{	dataType data;            //数据域	node *next;               //指针域};class ls{public:	ls();	~ls();	void push(dataType var); //压栈	void pop();              //出栈.出栈之前并不判断栈是否已空.需要通过isEmpty()判断	dataType stackTop();     //取栈顶元素,栈顶无变化.不提前判断栈是否为空	bool isEmpty();          //判空.空返回true,反之返回false	//bool isFull();         //判满.链栈是动态分配内存空间的,无需判满private:	node *top;               //栈顶指针.top=NULL表示为空栈};#endif

3、ls.cpp链栈类成员函数的定义

#include 
#include "ls.h"using namespace std;ls::ls(){ top = NULL; //top=NULL表示链栈为空}ls::~ls(){ node *ptr = NULL; while(top != NULL) //循环释放栈节点空间 { ptr = top->next; delete top; top = ptr; }}void ls::push(dataType var){ node *ptr = new node; ptr->data = var; //新栈顶存值 ptr->next = top; //新栈顶指向旧栈顶 top = ptr; //top指向新栈顶}void ls::pop(){ node *ptr = top->next; //预存下一节点的指针 delete top; //释放栈顶空间 top = ptr; //栈顶变化}dataType ls::stackTop(){ return top->data; //返回栈顶元素,并不判断栈是否已空}bool ls::isEmpty(){ return top == NULL; //栈顶为NULL表示栈空}

4、main.cpp

#include 
#include "ls.h"using namespace std;int main(){ ls exp; int i = 0; for(i=0;i<3;++i) { exp.push(i); } for(i=0;i<3;i++) { if(!exp.isEmpty()) { cout<
<
你可能感兴趣的文章
flash flex 程序出现错误 Error #2032
查看>>
【数据库】主键、外键、索引
查看>>
C#解析HTML
查看>>
导出/打印项目数据报表需要设置IE浏览器
查看>>
8个强大的基于Bootstrap的CSS框架
查看>>
MAC OSX在视图port哪个程序占用,杀死进程的方法
查看>>
Linux中select poll和epoll的区别
查看>>
图像识别引擎-引擎收集知识地图~
查看>>
【面试】如何找到迷宫出口
查看>>
iscroll5实现下拉加载更多
查看>>
hdu1753()模拟大型实景数字相加
查看>>
Cocos2d-x之MenuItem
查看>>
Esper学习之六:EPL语法(二)
查看>>
流和文件
查看>>
iOS:UIMapView地图视图控件的简单使用
查看>>
关于Python的3张图
查看>>
作IFRAME于iOS您的设备上支持滚动
查看>>
后台数据库优化——板机
查看>>
C++ redirect input
查看>>
linux_sound_alsa_Android+alsa音频系统中的几个问题
查看>>