顺序栈的实现和运算基本运算和链栈的基本运算有什么区别?

以下试题来自:
填空题栈的基本运算有三种:入栈、退栈和______。 参考答案读栈顶元素或读栈顶的元素或读出栈顶元素
为您推荐的考试题库
你可能感兴趣的试题
1A) log2n B) n/2 C) n D) n+12A) 3 B) 4 C) 5 D) 83A) 0 B) 3 C) OK D) 没有任何输出45
热门相关试卷
最新相关试卷实验报告一--链接栈与顺序队列的基本运算_中华文本库
第1页/共7页
课程实验报告
题目 链接栈与顺序队列的基本运算 班级 2010 信息与计算科学班 完成日期 笑嘻嘻小 ㈠实验要求: 编程实现链接栈与顺序队列的基本运算。 链接栈:插入元素,删除栈顶元素,读出栈顶元素,判断栈是否为空。 顺序队列:队列的插入,队列的删除,读队头元素,判断队列是否为空。 实验目的:熟练掌握链接栈,顺序队列的基本运算。 链接栈的结点结构与单链表的结点结构完全相同,即,将链接栈组织成单链表形 式。注意,链接栈中指针的方向是从栈顶指向栈底。 顺序队列是用顺序存储方法存储的队列。分配一片连续的存储空间,存放队列中 的表目,并用两个变量分别指向队头和队尾。 ㈡I.链接栈的基本运算 I.1 实验代码:#include&stdio.h& #include&malloc.h& #define LEN sizeof(struct node) #define NULL 0 struct node { struct node* }; 姓名笑嘻嘻小 学号 笑嘻嘻
struct linklist {struct node*T; }; //*主函数*// void main() { struct linklist L; L.T=(struct node*)malloc(LEN); L.T=NULL; struct linklist push(struct linklist L,int x); struct linklist pop(struct linklist L); int top(struct linklist L); int sempty(struct linklist L); /*函数声明*/ for(x=10;x&=50;x=x+10) L=push(L,x); printf("向栈顶插入五个元素后,"); printf("栈顶元素为%d。\n",L.T-&info); for(x=1;x&=3;x++) L=pop(L); printf("连续删除链接栈 3 个元素后,"); printf("栈顶元素为%d。\n",L.T-&info); x=top(L); /* 向栈顶插入五个元素 10,20,30,40,50*/
printf("读出的栈顶元素为%d。\n",x); if(sempty(L))printf("调用 sempty(L)函数,栈已空。\n"); else printf("调用 sempty(L)函数,栈不空。\n");} /*栈的插入函数*/ struct linklist push(struct linklist L,int x) {struct node*p; p=(struct node*)malloc(LEN); p-&info=x; p-&link=L.T; L.T=p; return (L); } /*栈的删除函数*/ struct linklist pop(struct linklist L) {struct node*p; if(L.T==NULL)printf("栈空。\n"); else {p=L.T;L.T=L.T-&free(p);} return (L);} /*读出栈顶元素*/ int top(struct linklist L) {if(L.T==NULL){printf("栈空。\n");return 0;} else return(L.T-&info);} /*判断栈是否为空*/
int sempty(struct linklist L) {if(L.T==NULL)return(1); else return(0);} I.2 实验结果:
I.3 调试过程及其分析 ①T 始终指向的是栈顶元素,因此,T 总是指向新插入的结点。 ②在进行栈的删除,读栈顶元素,判断栈是否为空运算时,首先要判断栈是否为 空。 II.顺序队列的基本运算 II.1 实验代码:#include&stdio.h& #define m0 20 struct queue {int q[m0+1]; int f,r;};
//*主函数*// int main() {struct queue qu,*p; p=& qu.f=1; qu.r=1; void enq(struct queue*p,int x); void deq(struct queue*p); int front(struct queue qu); int qempty(struct queue qu); for(x=10;x&=50;x=x+10) enq(p,x); printf("向顺序队列依次插入 5 个元素后,")
第1页/共7页
寻找更多 ""您所在的位置: &
例题解析(3)
例题解析(3)
清华大学出版社
《新编数据结构习题与解析》第3章栈和递归,本书介绍栈和递归的定义、栈的特点及与线性表的异同;掌握顺序栈和链栈的组织方法,栈满、栈空的判断及其描述。本节为例题解析。
3.1.2& 例题解析(3)
【例3-1-16】栈是一种具有特性的线性表。
答:后进先出或先进后出。
【例3-1-17】顺序栈和链栈的区别仅在于它们是栈的不同。
答:存储结构。
【例3-1-18】一个栈的输入序列是12345,输出序列为12345,其进栈出栈的操作为。
答:1进栈,1出栈,2进栈,2出栈,3进栈,3出栈,4进栈,4出栈,5进栈,5出栈。
【例3-1-19】有n个元素,它们的编号为1~n,顺序的进入一个栈,则可能的出栈序列有种。
以下三类问题是等价的:(1)n个不相同元素进栈的出栈序列个数;(2)由n个不相同元素构成不同形态的二叉树个数;(3)n个不相同元素的先序序列构成不同形态的二叉树个数。
【例3-1-20】判断以下叙述的正确性。
(1)栈底元素是不能删除的元素。
(2)顺序栈中元素值的大小是有序的。
(3)在n个元素进栈后,它们的出栈顺序和进栈顺序一定正好相反。
(4)栈顶元素和栈底元素有可能是同一个元素。
(5)若用s[0..m-1]表示顺序栈的存储空间,则对栈的进栈、出栈操作最多只能进行m次。
(6)栈是一种对进栈、出栈操作总次数做了限制的线性表。
(7)栈是一种对进栈、出栈操作的次序做了限制的线性表。
(8)对顺序栈进行进栈、出栈操作,不涉及元素的前、后移动问题。
(9)空栈没有栈顶指针。
答:(1)错误。当栈中只有一个元素时,这个元素也称栈底元素,它可以删除。
(2)错误。顺序栈是指用顺序存储结构实现的栈,栈中的元素不一定是有序的。
(3)错误。例如进栈序列为123,出栈的序列可以是132。
(4)正确。当栈中只有一个元素时就是这种情况。
(5)错误。可以进行任意多次的进栈、出栈操作,但栈中最多只有m个元素。
(6)错误。可以进行任意多次的进栈、出栈操作。
(7)错误。只要栈不满就可以进行进栈操作,只要栈不空就可以进行出栈操作,并不规定进栈、出栈操作的次序。
(8)正确。
(9)错误。空栈是指栈中没有元素,但一定要有栈顶指针。
【例3-1-21】输入序列A、B、C通过一个栈后产生的全部输出序列有哪些?
答:利用栈的&后进先出&的特点,有如下几种情况:
A进,A出,B进,B出,C进,C出,产生输出序列ABC。
A进,A出,B进,C进,C出,B出,产生输出序列ACB。
A进,B进,B出,A出,C进,C出,产生输出序列BAC。
A进,B进,B出,C进,C出,A出,产生输出序列BCA。
A进,B进,C进,C出,B出,A出,产生输出序列CBA。
不可能产生输出序列CAB。
【例3-1-22】有5个元素,其进栈次序为A、B、C、D、E,在各种可能的出栈次序中,以元素C、D最先出栈(即C第一个且D第二个出栈)的次序有哪几个?
答:可能的次序有CDBAE、CDEBA、CDBEA。
&【责任编辑: TEL:(010)】&&&&&&
关于&&的更多文章
HTML 语言是当今网页设计的主流表现语言,CSS 是当今网页设计的
本书描述了黑客用默默无闻的行动为数字世界照亮了一条道路的故事。
本书是一本系统讲解Android应用开发安全的书籍。它首
产品经理发展到一定阶段,再要成长,光靠学习一些知识
本教材以面向应用型人才培养为目标;以非传统的组织结
本书是一本介绍当前主流计算机网络应用技术的工具图书,全面总结了当前最主流、最基础的计算机网络应用,包括局域网和互联网应用
51CTO旗下网站

我要回帖

更多关于 栈 四则运算 的文章

 

随机推荐