ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

受限的线性表~栈~顺序栈

2021-02-14 16:01:41  阅读:213  来源: 互联网

标签:顺序 入栈 SqStack top 元素 MaxSize 受限 数据 线性表


#include<iostream>
#define MaxSize 50 
typedef int DataType;
using namespace std;

//栈的数据结构 
//顺序栈
/*
	数据运算:
	1.初始化一个空栈:初始指针==-1
	2.数据元素入栈:如果栈没满,数据元素入栈
	3.数据元素出栈:如果栈没空,数据元素出栈
	4.得到栈顶元素:如果栈没空,取栈顶元素
	5.销毁顺序栈 

	判断条件
	1.栈空 s.top==-1
	2.栈满 s.top=MaxSize-1
	3.入栈语句:s.top先加,数据元素在入栈  s.data[++s.top]=x
	4.出栈语句:数据元素先出栈,s.top后--  x=s.data[s.top--]
*/

typedef struct node{
	DataType data[MaxSize];  //存放栈中的数据 
	int top;  //存放栈顶指针 
}SqStack;

//初始一个空栈
void InitStack(SqStack &S){
	S.top=-1;   //初始时,栈顶指针指向-1 
} 
//判断栈是否为空
bool StackEmpty(SqStack &S){
	if(S.top==-1)
		return true;   //栈空 
	else{
		return false;  //不空 
	}
		
}
//入栈,要判断栈是不是满了 
bool Push(SqStack &S,DataType x){
	if(S.top==MaxSize-1){
		cout<<"栈满了!无法入栈"<<endl;
		return false; 
	} 
	S.data[++S.top]=x;
	return true; 
} 
//出栈,判断是不是在栈空
bool Pop(SqStack &S,DataType &x){
	if(S.top==-1){
		cout<<"顺序栈为空!,无法出栈"<<endl;
		return false;
	}
	x=S.data[S.top--];
	return true;
} 
//读出栈顶元素
bool GetTop(SqStack &S,DataType &x){
	if(S.top==-1){
		cout<<"顺序栈为空!无法读出"<<endl;
		return false;
	}
	x=S.data[S.top];
	return true;
}
//销毁顺序栈
void DestoryStack(SqStack &S){
	S.top==-1;
} 
int main(){
	SqStack S;
	InitStack(S);
	int x;
	Push(S,12);
	Pop(S,x);
	cout<<x<<endl;
	Pop(S,x);
	DestoryStack(S);
	return 0;
} 
 

  

标签:顺序,入栈,SqStack,top,元素,MaxSize,受限,数据,线性表
来源: https://www.cnblogs.com/nanfengnan/p/14402067.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有