一道数据结构中的问题...急急急~~~

来源:百度知道 编辑:UC知道 时间:2024/04/28 16:32:47
一个栈的入栈顺序是a,b,c,d,e则栈的不可能输出序列是___
A.edcba B.decba C.dceab D.abcde
选择哪个答案啊....为什么...???请高手指教..谢谢..

还有...有没有循环栈的说法???

C
一个一个试
第一步
abcd顺序进栈,出d
第二步
栈元素为abc,出c
第三步
栈元素为ab,进e,出e
第三步
栈元素为ab,此时,栈顶是b,可能出a吗?不可能,所以C不可能

就这样一组一组测试,细心就没问题

用排除法可知选C,

2、链栈

2.1、只允许在表头进行插入和删除运算的单链表称为链栈。链栈有头节点和没有头节点两种。

2.2、栈以链表的形式出现,链表 (不带头结点)首指针为s,即栈顶为s,链表尾结点为栈底。

初始化时,s=NULL(不带头结点);s=(LStack *)malloc(sizeof(LStack)),s->next=NULL(带头结点)。

栈顶指针的引用为s(不带头结点)或s->next(带头结点),栈顶元素的引用为s->data(不带头结点)或s->next->data(带头结点)。

栈空条件为s==NULL(不带头结点)或s->next=NULL(带头结点)。

进栈操作和出栈操作与单链表在开始结点的插入和删除操作一致。

栈的链式存储结构的C语言描述:

#include <stdio.h>

#include <stdlib.h>

<!--[if !supportEmptyParas]--> <!--[endif]-->

typedef int ElemType;

typedef struct stnode{

ElemType data;

struct stnode *next;

}LStack;

2.3、链栈基本函数算法描述

2.3.1、初始化

void initstack(L