首页 > 其他分享 >线性表——顺序栈

线性表——顺序栈

时间:2024-07-11 09:29:46浏览次数:9  
标签:顺序 线性表 SqStack int top MaxSize void

#include <bits/stdc++.h>
using namespace std;

#define MaxSize 2
typedef struct{
	int data[MaxSize];
	int top;
}SqStack;

//初始化 
void InitStack(SqStack &S){
	S.top=-1;
}

//判断栈空和已入栈元素个数 
void StackEmpty(SqStack S){
	if(S.top==-1)
		cout<<"Stack Empty!"<<endl;
	else
		cout<<"Stack Length:"<<S.top+1<<endl;
}

//入栈 
void Push(SqStack &S,int x){
	if(S.top==MaxSize-1){
		cout<<"Push Error:Stack Full!"<<endl;
		return;
	}
	S.data[++S.top]=x;
}

//出栈 
void Pop(SqStack &S){
	if(S.top==-1){
		cout<<"Pop Error:Stack Empty!"<<endl;
		return;
	}
	S.top--;
}

//取栈顶元素 
void GetTop(SqStack S,int &x){
	if(S.top==-1){
		cout<<"GetTop Error:Stack Empty!"<<endl;
		return;
	}
	x=S.data[S.top];
	cout<<"Stack Top Element:"<<x<<endl;
}

//从栈底到栈顶顺序打印 
void Print(SqStack S){
	if(S.top==-1){
		cout<<"Print Stack Error:Stack Empty!"<<endl;
		return;
	}
	for(int i=0;i<MaxSize;i++)
		cout<<S.data[i]<<" ";
	cout<<endl;
}

int main(){
	int x;
	SqStack S;
	InitStack(S);
	
	StackEmpty(S);
	Push(S,3);
	StackEmpty(S);
	GetTop(S,x);
	Push(S,5);
	StackEmpty(S);
	GetTop(S,x);
	Print(S);
	
	return 0;
}

标签:顺序,线性表,SqStack,int,top,MaxSize,void
From: https://www.cnblogs.com/b1ackstar/p/18295420

相关文章

  • 5-顺序栈的操作
    #include<stdio.h>#include<stdlib.h>#include<stdbool.h>typedefintElemType;/**/#defineMaxSize50/**/typedefstruct{ElemTypedata[MaxSize];/*top:数组索引从0开始=MaxSize-1*/inttop;}SqStack;/*初始化栈*/voidInit......
  • 在Linux中,系统的开机启动顺序是什么?
    在Linux中,系统的开机启动顺序是一个复杂但有序的过程,它涉及从硬件自检到用户登录的多个阶段。以下是Linux系统开机启动顺序的详细说明:一、BIOS自检与启动设备选择加载BIOS:BIOS(基本输入输出系统)是计算机启动时的第一个软件。它负责在硬件和软件之间提供接口,进行开机自检(POST),检......
  • java类的加载顺序及复杂案例(阿里)
    一.无继承关系的情况下在Java中,类的初始化顺序涉及到多个方面,包括静态变量、静态初始化块、实例变量、实例初始化块(也称为构造器初始化块或初始化块)以及构造器的执行顺序。这里是一个详细的顺序说明:静态变量和静态初始化块:当类被加载到JVM时,类的静态成员(静态变量和静态初......
  • 线性表——静态链表(插入阉割版)
    #include<bits/stdc++.h>usingnamespacestd;#defineMaxSize3typedefstructSNode{ intdata; intnext;}SLinkList[MaxSize];//初始化voidInitList(SLinkListL){ L[0].data=0; //我这里放的是链表长度 for(inti=0;i<MaxSize;i++){ L[i].next=-1; }}//......
  • 线性表——顺序表(动态分配)
    #include<bits/stdc++.h>usingnamespacestd;#defineInitSize5typedefstructSeqList{ int*data; //动态分配的数组指针 intlength; //数组当前个数 intMaxSize; //数组的最大容量}List;//动态分配的初始化voidInitList(List*L){ L->data=newint[InitSiz......
  • 线性表——单链表
    #include<bits/stdc++.h>usingnamespacestd;typedefstructLNode{ intdata; structLNode*next;}LNode,*List;//初始化voidInitList(List&L){ L=(LNode*)malloc(sizeof(LNode)); L->next=NULL;}//头插voidListInsertHead(List&L,inte)......
  • 学生管理系统(通过顺序表,获取连续堆区空间实现)
    将学生的信息,以顺序表的方式存储(堆区),并且实现封装函数:1】顺序表的创建,2】判满、3】判空、4】往顺序表里增加学生信息、5】遍历学生信息6】任意位置插入学生信息7】任意位置删除学生信息8】修改学生信息9】查找(按学生的学号查找)、10】删除重复学生信息11】销毁顺序......
  • 数据结构:二叉树的顺序结构及代码实现
    一:二叉树的顺序结构普通的二叉树是不适合用数组来存储的,因为可能会存在大量的空间浪费。而完全二叉树更适合使用顺序结构存储。现实中我们通常把堆(一种二叉树)使用顺序结构的数组来存储,需要注意的是这里的堆和操作系统虚拟进程地址空间中的堆是两回事,一个是数据结构,一个是操......
  • mybatis-plus中last和orderBy的连用的使用顺序
    1. mybatis-plus中last和orderBy的连用的使用顺序在MyBatis-Plus中,last方法用于在构建查询时添加自定义的SQL片段,而orderBy方法用于指定排序规则。当你想要结合使用这两个方法时,可以先调用orderBy指定排序规则,然后调用last添加自定义的SQL片段。@Autowired......
  • 二叉树的顺序存储
    目录顺序存储:简介:节点的位置关系:优缺点:优点:缺点:二叉树顺序存储的模拟实现:向上调整算法:向下调整算法:二叉树的初始化:直接初始化:建堆初始化:二叉树的头删:二叉树的尾插:二叉树的取顶端元素:二叉树的判空:二叉树的销毁:完整代码:顺序存储:简介:顺序结构存储就是使......