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

栈的简单模拟

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

栈的简单模拟

#include

int main()
{
	char a[4000][20]={0};//存操作 
	int i=0, b[4000]={0}, shu=0;  
	int shuchu[4000]={0}, k=0;
	while(scanf("%s",&a[i])!=EOF) //读取操作 
	{
		i++;
	}
	for(int r=0; r0)//stack内无元素,则忽略操作 
			{
				shuchu[k]=b[shu-1];//b【0】为stack底部,b【shu】为顶部 
				shu--;//stack上限下调,出stack 
				k++;//这里是用一个数组存出stack的数,这样在最后就能输出从最开始为止每次出栈的元素 
			}
		} 
		else//push
		{
			int flag=1;//判断一下push的是正负数,正为1,负数0 
			if(a[r][5]=='-')//判断push(后第一个是数码还是- 
			{
				flag=0;
				//在循环内定义的变量为局部变量形参 
				int wei=6, shuzi=0;
				while(a[r][wei]>='0' && a[r][wei]<='9') 
				{
					shuzi*=10;//每次循环通过*10使得整体上升一位,最后一位为0存新的数 
					shuzi+=a[r][wei]-48;//由于a存char,所以-48转换为数字 
					wei++;
				}
				shu++;//循环最后使stack上限+1 
				b[shu-1]=-shuzi;//由于为负数,故 
			}
			else//正数 
			{
				int wei=5, shuzi = 0;
				while(a[r][wei]>='0' && a[r][wei]<='9')
				{
					shuzi*=10;
					shuzi+=a[r][wei] - 48;
					wei ++;
				}
				shu ++;//循环最后使stack上限+1
				b[shu - 1] =shuzi;
			}
		}
	}
	//这里是所有操作结束了 
	
	if(shu==0)//空stack ,只用输出shuchu 
	{
		for(int p=0;p0;p--)//stack顶至底部输出 
		printf("%d ",b[p]);
		
		printf("%dn",b[0]);
	}
	
	return 0;
}	

Description

        数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法和索引技术有关。

       栈是一个非常经典的数据结构。我们可以形象地想象一只桶,这只桶里面的元素是从下至上依次排列的,不存在两个元素在桶里的同一个高度。我们可以从桶的顶部往里面放入一个元素,这个操作称为入栈(push);也可以将其最上面的一个元素拿掉,这个操作称为出栈(pop)。显然,由于最顶上的元素“压着”其他元素,我们不能从栈的其他地方放入或者拿掉一个元素。

       现在,为了更好地理解栈,请你编写一个程序来实现栈的各项操作。

       Tips: 我们可以用数组来模拟栈的实现。声明一个数组stack来存储栈内元素,一个整型变量top来表示栈顶在数组中的位置。

Input

       输入有若干行,你要对每一行的命令进行相应的操作。

对于每一行,有一个字符串,表示要进行的操作名称。

若为push(x),则表示将这个整数x入栈。

若为pop,表示按照规则将栈内一个元素出栈,若栈内无元素,忽略此次命令。

若为sequence,从栈底至栈顶输出此时的栈内元素,以一个空格分隔每个元素

Output

       输出应有若干行,表示按照要求所进行的输出,每次输出操作占一行。

在所有操作结束以后,若栈非空,按照出栈规则将栈内元素依次出栈,直至栈内无元素,然后输出从最开始为止每次出栈的元素,以一个空格分隔每个元素。

对于上述的每一行输出操作,若该次操作没有任何元素需要输出,输出一个空行。

Sample Input

push(3)

push(6)

push(9)

sequence

pop

push(7)

push(13)

sequence

Sample Output

3 6 9

3 6 7 13

9 13 7 6 3

Sample Explanation

对样例中每次操作的具体情况进行更详细的说明

3入栈,栈内元素3,无出栈元素

6入栈,栈内元素3 6,无出栈元素

9入栈,栈内元素3 6 9,无出栈元素

输出栈内元素

栈顶元素9出栈,栈内元素3 6,出栈序列9

7入栈,栈内元素3 6 7,出栈序列9

13入栈,栈内元素3 6 7 13,出栈序列9

输出栈内元素

随后13、7、6、3依次出栈,出栈序列即为9 13 7 6 3

Hint

-10000≤x≤10000,总操作数≤3000

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/997760.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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