首页 > 编程知识 正文

栈输出序列共有几种,ds队列 组队列

时间:2023-05-04 10:00:41 阅读:160339 作者:2374

4099:队列和堆栈

总时间限制: 1000ms内存限制: 65536kB

描述

队列和堆栈是具有推送k和pop操作的两个重要数据结构。 push k将数字k添加到队列或堆栈中,pop从队列和堆栈中取一个数字。 队列和堆栈的区别在于取数的位置不同。

队列是先进先出的。 如果将队列视为一个横向通道,push k将k放在队列的最右边,pop从队列的最左边检索一个数。

栈是后进先出:如果把栈也看作是旁边的一个通道,那么push k把k放在栈的最右边,pop也从栈的最右边取出一个数。

假设队列和堆栈当前从左到右包含1和2的数字,push 5和pop操作示例如下:

推送5 pop队列12----125----25

推5 pop堆栈12----125----12

现在,假设队列和堆栈为空。 给定一系列推式k和pop操作后,输出存储在队列和堆栈中的数字。 如果队列或堆栈为空但接收到pop操作,则输出error。

输入

第一行为m表示有m组测试输入,m100。

每个组的第一行是n,下一行表示有n个推送或pop操作。 (n150 )

接下来的n行,每行是推式k或pop。 其中k是整数。

(输入以确保同时存在于队列或堆栈中的数量不超过100。)

输出

对各组的测试数据输出两行。 通常,第一行是从左到右存储在队列中的数字,第二行是从左到右存储在堆栈中的数字。 如果在操作过程中队列或堆栈为空但收到了pop,则输出error。 输出一共应该是2*m行。

样例输入

2

4

推1

推送3

pop

推送5

1

pop

样例输出

3 5

1 5

错误

错误

问题链接:Bailian4099队列和堆栈

问题简述(略)

问题分析

有关堆栈和队列的问题可以由C的容器处理。 知道堆栈和队列的规模后,用数组实现简单的堆栈和队列,其操作(进出堆栈、进出队列)可以用函数或简单的语句来实现。 这样简单的做法,往往是高效的方法。

程序说明(略)

参考链接(略)

题记:心中有数据结构,通过在数组中添加简单句就可以实现数据结构。

AC的c语言程序如下。

/* Bailian4099队列和堆栈*/# include stdio.h # include string.h # define n150 int stack [ n ],ps; int queue[N]、qh、qt; char cmd[5]; { int main(void ) intm,n,sflag,qflag,a,I; scanf('%d ',m ); while(m-- ) Scanf ) ' %d ',n ); sflag=qflag=0; ps=0,qh=0; qt=0; while(n-- ) scanf ) ' %s ',cmd ); if(cmd[1]=='u ' ) scanf('%d ',a ); stack[ps ]=a; queue[qt ]=a; }elseif(cmd[1]=='o ' ) if ) PS==0) sflag=1; if(Qt-qh==0) qflag=1; ps--; qh; }if(qflag ) printf(error(n ); ELSE{for(I=qh; i qt; I ) printf('%d ',queue[i]; 打印((n ); }if(sflag ) printf(error(n ); ELSE{for(I=0; i ps; I ) printf('%d ',stack[i]; 打印((n ); } } return 0; }

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。