首页 > 其他分享 >共享栈

共享栈

时间:2023-04-20 15:00:07浏览次数:28  
标签:return SqStack top bool false 共享 true

#include <iostream>
#define MAXSIZE 10
//定义共享栈的结构体 
typedef struct {
	int data[MAXSIZE];
	int top,rear;
}SqStack;
//初始化共享栈,令首位索引分别指向栈头和栈尾 
bool initStack(SqStack &S){
	S.top = -1;
	S.rear = MAXSIZE;
}
//判断栈是否为空,若为空返回true,否则返回false; 
bool StackEmpty(SqStack S){
	if(S.top==-1 && S.rear == MAXSIZE){//出现初始化条件时为空 
		return true;
	}
	return false;
}
bool push(SqStack &S,int x,bool flag){//true为在前方插入;false为在后方插入,加&是需要修改栈的数据。 
	if(S.top+1==S.rear){//判断栈是不是已经满了 
		return false;
	}
	if(flag){//插入时先将栈索引指向可以存储数据的单元地址,所以为++S.top 
		S.data[++S.top] = x;
	}else{
		S.data[--S.rear] = x;
	}
	return true;
}
bool pop(SqStack &S,int &x,bool flag){//flag与push方法等价用法 
	if(StackEmpty(S)){//判断栈是否为空 
		return false;
	}
	if(flag){//删除时先将数据取出,然后索引减一。 
		x = S.data[S.top--];
	}else{
		x = S.data[S.rear++];
	}
	return true;
}
bool GetTop(SqStack S,int &x,bool flag){//获取栈顶数据 
	if(StackEmpty(S)){//判断栈是否为空 
		return false;
	}
	if(flag){
		x = S.data[S.top];
	}else{
		x = S.data[S.rear];
	}
	return true;
}
bool DestroyStack(SqStack &S){
	S.top = -1;
	S.rear = MAXSIZE;
	return true;
}
bool printStack(SqStack S){
	if(StackEmpty(S)){//判断栈是否为空 
		return false;
	}
	printf("前面:\n");
	for(int i=0;i<S.top+1;i++){//前面数据从0开始为数据存储单元,以top+1为循环结束条件 
		printf("%d",S.data[i]);
	}
	printf("\n");
	printf("后面:\n");//前面数据从MAXSIZE-1开始为数据存储单元,以rear-1为循环结束条件 
	for(int j=MAXSIZE-1;j>S.rear-1;j--){
		printf("%d",S.data[j]);
	}
	printf("\n");
	return true;
}
int main(){
	SqStack S;
	int x;
	initStack(S);//初始化共享栈 
	push(S,1,true);//栈头插入数据 
	push(S,2,false);//从栈尾插入数据 
	push(S,3,true);
	push(S,4,false);
	printStack(S);//打印栈的数据 
	pop(S,x,true); //从栈头删除数据 
	printStack(S);
}

标签:return,SqStack,top,bool,false,共享,true
From: https://www.cnblogs.com/jczhhxx/p/17336825.html

相关文章

  • Linux系统之文件共享目录设置方法
    (Linux系统之文件共享目录设置方法)一、本次实践目的1./data/soft的用户组为admin2./data/soft目录能被admin组的成员读取、写入和访问,除了root用户外其余用户无此权限。3.admin组用户有zhangsan/lisi/admin,kitty用户主组为kitty,属组为IT。4.在/data/soft下创建的文件,其组所......
  • 知识付费小程序源码资源共享会员积分广告小程序定制开发源码二开
    资源分享可以在后台添加各种资源,如风景,写真,cos,壁纸,各种链接。后台可以设置这些资源如何观看,免费,看广告,VIP广告设置可以添加各种广告,可以在广告设置里设置好广告id还有广告应用场景。VIP设置管理员可以在后台更改用户的VIP设置,也可以设置卡密,让用户自行解锁vip,也可以设置积分,让用户......
  • 渗透测试_CORS跨域资源共享
    CORS跨域资源共享利用方式访问页面查看网络Access-Control-Allow-Origin设置为*所有域名可以请求本站资源。Access-Control-Allow-Origin:该字段是必须的。它的值要么是请求时Origin字段的值,要么是一个*,表示接受任意域名的请求。Access-Control-Allow-Credentials:该字段可......
  • 企业网盘存储和共享文件的好方法
    如今在企业的日常工作中离不开在线文件共享,很多团队的协作方式主要是通过第三方社交工具进行文件传输,这种文件共享方式,不仅增加了文件泄露的风险,并且文件不易保存。经常会出现A将文件发送给B,B再根据工作需要将文件发给C,D的情况,这种文件共享方式降低了工作效率。有需求就有市场,目前......
  • Linux 与 Windows 之间的内网共享还有 samba 的一些小知识
    最近内网搞了个Linux当办公机,于是内网之间文件共享就成了问题。最近刚好搞了一下有一点小心得共享一下。Windows的文件共享方式我就不累述了,百度上有很多教程,无脑照做就行了。唯一需要注意的就是用户权限。如果你是用微软账号登陆的话,需要去找一下你的实际用户名是什么,有的时......
  • 组策略映射共享文件夹
    在编写了安装脚本之后,本节任务是将提供安装程序的共享文件夹自动映射到每个用户,为了方便每个用户,还可以在每个虚拟机的桌面自动创建快捷方式,现在介绍方法,主要内容如下。(1)在ActiveDirectory域服务器中,打开“组策略管理”程序,在“克隆链接组”组织单位中新建组策略,本示例中新建组策......
  • 主题:基于共享储能电站的工业用户日前优化经济调度
    Matlab调用Yalmip工具箱,采用Cplex或Gurobi求解器求解。主题:基于共享储能电站的工业用户日前优化经济调度多用户(微网)储能电站日前经济调度,完美复现......
  • mac访问widows共享
    windows的pc共享文件夹。mac打开任意一个浏览器,我习惯用safri。输入"smb://ip地址",比如pc的ip地址是192.168.1.100,,那么就输入"smb://192.168.1.100"或者直接用finder,可以看到windows的共享pc,打开验证身份finder显示出pc的时间比较慢......
  • 基于共享储能电站的工业用户日前优化经济调度方法
    基于共享储能电站的工业用户日前优化经济调度方法文献复现首先提出共享储能电站的概念,分析其商业运营模式。然后将共享储能电站应用到工业用户经济优化调度中,通过协调各用户使用共享储能电站进行充电和放电的功率,实现用户群日运行成本最优。最后以江苏省3个工业用户进行算例......
  • 基于非对称纳什谈判的多微网电能共享运行优化策略
    基于非对称纳什谈判的多微网电能共享运行优化策略MATLAB代码,电网技术文献复现:关键词:纳什谈判合作博弈 微网电转气-碳捕集 P2P电能交易交易   参考文档:《基于非对称纳什谈判的多微网电能共享运行优化策略》完美复现仿真平台:MATLABCPLEX+MOSEKIPOPT主要内容:该代码......