【数据结构应用题】栈、队列的应用

栈定义与基本操作的实现

写代码:定义顺序存储的栈(数组实现),数据元素是int型

//[1]自定义变量部分
#define MaxSize 150          //定义栈中元素的最大个数
//[2]顺序栈的数据结构
typedef int Elemtype;
typedef struct SqStack
{
   
	Elemtype data[MaxSize];  //存放栈中元素
	int top;                 //栈顶指针,指向栈顶位置
}SqStack;                    //顺序栈的简写

写代码:基于上述定义,实现“判空、判满、入栈、出栈”四个基本操作

顺序栈判空操作:

bool StackEmpty(SqStack S)
{
   
	if(S.top == -1)
		return true;            //栈空
	else
		return false;			//栈不空
}

顺序栈判满操作:

bool StackFull(SqStack S){
   
	if(S.top == MaxSize - 1)
		return true;		    //栈满
	else
		return false;			//栈不满
}

顺序栈入栈操作:

bool Push(SqStack &S,Elemtype e)
{
   
	if(S.top == MaxSize - 1)		//栈满,报错
		return false;
	S.data[++S.top] = e; //指针先加1,再入栈 //S.top++;       (将栈顶指针后移)
	return true;                    	   //S.data[S.top] = e;(插入元素)
}

顺序栈出栈操作:

bool Pop(SqStack &S,Elemtype &e)
{
   
	if(S.top == -1)
		return false;			    //栈空,报错
	e = S.data[S.top--];//先出栈,指针再减1 //e = S.data[S.top];(e记录栈顶元素)
	return true;						  //S.top--;       (将栈顶指针前移)
}

写代码:定义链式存储的栈(单链表(头插法)实现)

typedef int Elemtype;
typedef struct StackNode 
{
   
	E
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值