共享栈初始化,入栈,出栈的操作

news/2024/9/19 4:17:48 标签: 数据结构, 算法

设有两个栈S1,S2都采用顺序栈方式,并且共享一个存储区[0...MAaxSize-1],为了尽量利用空间,减少溢出的可能,可采用栈顶相向,迎面增长的存储方式。试设计S1,S2有关初始化,入栈,出栈的操作算法

代码:

typedef int  SElemType;//栈中存储元素的类型
typedef struct{
	SElemType stack[MaxSize];
	int top[2];//两个栈的栈顶,top[0],top[1] 
}ShareStack;
//初始化
void initSharStack(SharStack &shareStack) {
	shareStack.top[0]=-1;
	shareStack.top[1]=MaxSize;
}
//入栈
//i表示操作栈的编号,x表示入栈的元素
bool push(ShareStack &shareStack,int i,SElemType x){
	//判断是否合法入栈
	if(i<1 || i>1){
		return false;
	} 
	//判断栈满
	if(shareStack.top[0]+1=shareStack.top[1]){
		printf("栈满\n");
		return false; 
	}
	//栈1入栈
	if(i==0){
		shareStack[++shareStack.top[0]=x;
	} else if(i==1){
		//栈2入栈
		shareStack[++shareStack.top[1]=x;
	}
	return true; 
} 
//出栈
bool pop(ShareStack &shareStack,int i,SElemType x){
	//判断是否合法入栈
	if(i<1 || i>1){
		return false;
	}
	//栈空判断
	//栈1空 
	if(i==0&&shareStack.top[0]=-1){
		printf("栈空\n");
		return false;
	} 
	//栈2空 
	if(i==1&&shareStack.top[1]=MaxSize){
		printf("栈空\n");
		return false;
	}
	//栈1出栈
	if(i==0){
		x=shareStack[shareStack.top[0]--);
	} else if(i==1){
		//栈2出栈 
		x=shareStack[shareStack.top[1]++);
	}
	return true;
	
}


http://www.niftyadmin.cn/n/5664963.html

相关文章

心觉:不能成事的根本原因

很多人一直都很努力&#xff0c;每天都很忙 每天都学习很多东西&#xff0c;学习各种道&#xff0c;各种方法论 但是许多年过去了依然一事无成 自己的目标没有达成&#xff0c;梦想没有实现 为什么呢 关键是没有开悟 那么什么是开悟呢 现在很多人都在讲开悟 貌似开悟很…

如何用麦肯锡方法分析问题和解决问题?

一、什么是麦肯锡方法&#xff1f; 麦肯锡方法&#xff0c;也被称为麦肯锡7S模型&#xff0c;是全球知名咨询公司麦肯锡公司提出的一种管理方法。麦肯锡公司成立于1926年&#xff0c;是全球领先的管理咨询公司&#xff0c;其服务覆盖各个行业和领域&#xff0c;以高质量、高效率…

MySQL——数据库的高级操作(二)用户管理(4)修改用户密码

MySQL中的用户都可以对数据库进行不同操作&#xff0c;因此管理好每个用户的密码是至关重要的&#xff0c;密码一旦丢失就需要及时进行修改。root 用户具有最高的权限&#xff0c;不仅可以修改自己的密码&#xff0c;还可以修改普通用户的密码&#xff0c;而普通用户只能修改自…

手写的从前

手写的从前 分手了&#xff0c;从第一次爱上她到现在&#xff0c;大概5年了吧&#xff0c;一千五百个日夜啊&#xff0c;我们有过欢笑&#xff0c;有过争吵。我曾经以为只要我足够优秀&#xff0c;取得够好的成绩&#xff0c;就不会让你离开&#xff0c;如今看来一切还是那么可…

深入探索Android开发之Java核心技术学习大全

Android作为全球最流行的移动操作系统之一&#xff0c;其开发技能的需求日益增长。本文将为您介绍一套专为Android开发者设计的Java核心技术学习资料&#xff0c;包括详细的学习大纲、PDF文档、源代码以及配套视频教程&#xff0c;帮助您从Java基础到高级特性&#xff0c;再到A…

C语言 | Leetcode C语言题解之第404题左叶子之和

题目&#xff1a; 题解&#xff1a; bool isLeafNode(struct TreeNode *node) {return !node->left && !node->right; }int sumOfLeftLeaves(struct TreeNode *root) {if (!root) {return 0;}struct TreeNode **q malloc(sizeof(struct TreeNode *) * 2001);in…

基于SpringBoot+Vue+MySQL的在线招投标系统

系统展示 用户前台界面 管理员后台界面 系统背景 在当今商业环境中&#xff0c;招投标活动是企业获取项目、资源及合作伙伴的重要途径。然而&#xff0c;传统招投标过程往往繁琐复杂&#xff0c;涉及众多文件交换、信息审核与沟通环节&#xff0c;不仅效率低下&#xff0c;还易…

MyISAM引擎介绍

文章目录 特点适用场景不足锁机制表级锁的类型锁的获取和释放锁的等待队列 示例共享锁排他锁READ LOCAL MyISAM是MySQL的一种存储引擎&#xff0c;它以其简单性和高速度而著称。在早期的MySQL版本中&#xff0c;MyISAM广泛使用&#xff0c;尤其是在那些以读操作为主的应用场景中…