因为它说了依次轮搏纳流入栈和入队= =,所以就是A放栈,B放队,C放栈,D放队。
栈是先进后出,a在输出的第一个,那么肯定是在b进入前出来的,后面的bc也是同样情况,所以前六个是进a,出a,进b,出b,进c,出c,此时栈为空,后面输出序列为e,d,锋芹均在f之前,同理说明ed在f入栈之前出来的;
次序是 进d,进e,出e,出d,此时栈又空了,出栈为f,g,次序和输入一样,就是和a,b的一样,所以是进f,出f,进g,出g
全部过程:进a,出a,进b,出b,进c,出c,进d,进e,出e,出d,进f,出f,进g,出g。
扩展资料
栈在程序的运行中有着举足轻重的作用。最重要的是栈保存了一基基没个函数调用时所需要的维护信息,这常常称之为堆栈帧或者活动记录。
1、进栈(PUSH)算法
①若TOP≥n时,则给出溢出信息,作出错处理(进栈前首先检查栈是否已满,满则溢出;不满则作②);
②置TOP=TOP+1(栈指针加1,指向进栈地址);
③S(TOP)=X,结束(X为新进栈的元素);
2、退栈(POP)算法
①若TOP≤0,则给出下溢信息,作出错处理(退栈前先检查是否已为空栈, 空则下溢;不空则作②);
②X=S(TOP),(退栈后的元素赋给X):
③TOP=TOP-1,结束(栈指针减1,指向栈顶)。
参考资料来源:百度百科-栈
1、栈中的“先进后出,后进先出”意思是:
栈的概念是d压,就像子d壳装d,一粒一粒压进去,但是打出来的时候是从上面打出来的,最先压进去的最后d出来,如果进去顺序是123,打出来顺序是321,这就是后进先出。
2、栈的定义:
栈是限定仅在表尾进行插入和删除 *** 作的线性表。“栈”者,存储货物或供旅客住宿的地方,可引申为仓库、中转站,引入到计算机领域里,就是指数据暂时存储的地方,所以才有进栈、出栈的说法。
3、栈与队列的区别:
队列的腔稿概念就是我们平时排队,按次序来,你排在第1个,那你就第一个轮到,就是先进先出,先到先来。
4、栈碰圆搏在计算机领域里解释:
栈作为一种数据结构,是一种只能在一端进行插入和删除 *** 作的特殊线性表。它按照后进先出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始d出数据(最后一个数据被第一个读出来)。栈具有记忆作用,对栈的插入与删笑祥除 *** 作中,不需要改变栈底指针。
栈是允许在同一端进行插入和删除 *** 作的特殊线性表。允许进行插入和删除 *** 作的一端称为栈顶(top),另一端为栈底(bottom);栈底固定,而栈顶浮动;栈中元素个数为零时称为空栈。插入一般称为进栈(PUSH),删除则称为退栈(POP)。栈也称为后进先出表。
栈可以用来在函数调用的时候存储断点,做递归时要用到栈!
5、堆和栈的区别:
(1) *** 作系统方面区别:
在使用栈就象我们去饭馆里吃饭,只管点菜(发出申请)、付钱、和吃(使用),吃饱了就走,不必理会切菜、洗菜等准备工作和洗碗、刷锅等扫尾工作,他的好处是快捷,但是自由度小。使用堆就象是自己动手做喜欢吃的菜肴,比较麻烦,但是比较符合自己的口味,而且自由度大。
(2)数据结构方面区别:
还有就是数据结构方面的堆和栈,这些都是不同的概念。这里的堆实际上指的就是(满足堆性质的)优先队列的一种数据结构,第1个元素有最高的优先权;栈实际上就是满足先进后出的性质的数学或数据结构。虽然堆栈,堆栈的说法是连起来叫,但是他们还是有很大区别的,连着叫只是由于历史的原因。
6、程序例子
//main.cpp
int a = 0全局初始化区
char *p1全局未初始化区
main()
{
int b栈
char s[] = "abc"栈
char *p2栈
char *p3 = "123456"123456在常量区,p3在栈上。
static int c =0; 全局(静态)初始化区
p1 = (char *)malloc(10)
p2 = (char *)malloc(20)
分配得来得10和20字节的区域就在堆区。
strcpy(p1, "123456")123456放在常量区,编译器可能会将它与p3所指向的"123456"优化成一个地方。
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)