栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

顺序栈的基本操作

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

顺序栈的基本操作

文章目录
  • 顺序栈
    • 什么是顺序栈
    • 顺序栈的定义
    • 顺序栈的初始化
    • 顺序栈的压入
    • 顺序栈的弹出
    • 顺序栈取顶
    • 完整代码演示

 
顺序栈 
什么是顺序栈 

顺序栈是指利用顺序存储结构实现的栈,即利用一组地址连续的存储单元依次存放自栈底到栈顶的数据元素,同时附设指针top指示栈顶元素在顺序栈中的位置。

顺序栈的定义

栈需要一个bottom指针做栈底,需要一个top指针做栈顶,需要一个size来做栈的长。

typedef struct LStack{
	int size;
	int *top;
	int *bottom;
}LStack;//定义栈 
顺序栈的初始化

*注:本博客的top总是指向下一个空栈,所有的访问栈顶都需要指针下移一位

栈的初始化需要将栈顶与栈底指针放在一起,当压栈的时候指针再向下走一位,size为栈的长度,不是栈底到栈顶的长度

int initStack(LStack &s){
	s.bottom = (int *)malloc(MAXIN*sizeof(int));
	if(!s.bottom){
		cout<<"地址分配失败"< 

栈的地址依然用动态地址分配

顺序栈的压入

顺序栈的压入需要将栈顶指针向上移动,这个时候需要先判断栈顶指针是否到达最远,及top指针是否为空(前面定义栈时已经给了栈的大小size。栈顶指针在赋值后要继续指向下一位。

int Push(LStack &s,ElemType e){
	if(!s.top){
		cout<<"栈满"< 
顺序栈的弹出 

弹出时依然需要做判空处理,即判断是否top==bottom——栈空,同时也用来判断栈顶指针是否需要继续下移一位。

int Pop(LStack &s){
	if(s.top==s.bottom){
		cout<<"栈空"< 
顺序栈取顶 

取栈顶元素是比较重要的操作,可以方便我们判断操作是否正确执行,或者程序是否按我们的想法在运行。

ElemType GetTop(LStack s){
	ElemType e;
	if(s.top==s.bottom){
		cout<<"栈已空"< 
完整代码演示 
#include

using namespace std;

#define MAXIN 20

typedef int ElemType;
typedef struct linkStack{
	int *top;
	int *bottom;
	int size;
}linkStack;//定义链式栈 

int InitStack(linkStack &s){
	s.bottom = (int *)malloc(MAXIN*sizeof(int));
	if(!s.bottom){
		cout<<"地址分配失败"<>e;
		Push(s,e);
	}
	cout<<"现在的栈顶元素为:"< 

谢谢阅读!

接下来可能会写一些用栈解决的算法问题,感兴趣的小伙伴可以继续关注!!!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/604311.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号