栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

数据结构(C语言版) 栈和队列 算法设计Demo11

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

数据结构(C语言版) 栈和队列 算法设计Demo11

设计一个算法实现对栈取最小值的操作min函数,要求时间复杂度O(1)。

[算法分析]

将之前的最小值与新压入栈的元素两者的值进行比较,把每次较小的元素都保存在另一个辅助栈中。这样可以保证即使最小值出栈之后也可以找到次小的其他值。用两个栈来实现,栈sData存放入栈元素,栈sMin存放最小值。

[算法描述]

#define MaxSize 50
Typedef struct{
	Elemtype data[MaxSize];
	int top;
}Stack;

Stack sData,sMin;	// 入栈

void Push(Elemtype data){	// 第一个元素同时压入两个栈
	if(sData.empty()){
		push(sMin,data);
	}else{
		if(data
			push(sData,data);
			push(sMin,data);
		}else{
			push(sData,data);
		}
	}
}

void Pop(){	// 栈顶元素相等同时出栈
	if(top(sMin)==top(sData)){
		pop(sData);
		pop(sMin);
	}else{
		pop(sData);
	}
}

Elemtype min(){
	return top(sMin);
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/925742.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号