计算机一级考栈吗,计算机一二级选择题考点——栈|Day4

81d50a117ad5907c674378dfa9336dbe.png

15e39d521a1696aa8fa2b1734336c992.png线性表的分类

栈有两种基本的存储结构:顺序栈(顺序存储结构)、链栈(链式存储结构)。

1. 栈的基本概念

栈是一个后进先出(或先进后出)的线性表,只能在线性表的一端进行删除和插入操作。允许插入与删除的一端称为栈顶(top),与之对应的另一端称为栈底(bottom);插入操作称为入栈,删除操作称为出栈。图像说明:

d2a366467d8c243b3c1f5b0638ba5162.png

用一个形象的例子解释栈:堆叠起来的硬币和书,最先放置的在最底部,但最先拿到的在最顶部。

c42df7965fdc4a361dc479f849798911.png

2. 栈的特点

栈顶元素是最后被插入和最早被删除的元素。栈底元素是最早被插人和最后被删除的元素。在顺序存储结构下,栈的插入和删除运算不需移动表中其他数据元素。栈顶指针top动态反映了栈中元素的变化情况。3. 栈的计算(重点在于理解,而不是背公式)★

一般设栈的存储空间为S(n,m),其中m>n=1,m就是该栈能存储数据量的最大值。栈的初始状态没有元素,因此告诉top指针的值后就能确定栈底和栈顶,分两种情况:

top=0,此时栈底为1,栈顶为m;top=m+1,此时栈底为m,栈顶为1。一定不要混淆!

除空栈时top指向初始定义的值(该值为0或m+1),其他时候栈中都有元素,则top的值始终处于1和m之间,其他情况都会不存在。

例:设栈的存储空间为S(1:7),表格图像说明:

56bc77bd363a7ecb51dc60467d280fcb.png

①计算出入栈的元素个数:

一般只进行出栈和入栈操作,此时出入栈的元素个数为出入栈前后两次top值之差取绝对值。

②计算栈中的元素个数:

经过一系列操作后,此时栈中的元素个数为初始top和结果top之差取绝对值。

例:设栈的存储空间为S(1:50),初始状态为top=0,第一次进行入栈操作后top=30,第二次进行出栈操作后top=20。

第一次入栈操作:

入栈元素个数=入栈前top值-入栈后top值=0-30=-30,再取绝对值为30个

栈中元素个数=初始top值-结果top值=0-30=-30,再取绝对值为30个

第二次出栈操作:

出栈元素个数=出栈前top值-出栈后top值=30-20=10,再取绝对值为10个

栈中元素个数=初始top值-结果top值=0-20=-20,再取绝对值为20个

谁减谁的先后顺序无所谓,最后结果取正的就行

练习题

1. 设栈的存储空间为S(1:50),初始状态为top=51。现经过一系列正常的入栈与退栈操作后,top=1,则栈中的元素个数为( )

A. 50 B. 49 C. 0 D. 1

——————

2. 设栈的存储空间为S(1:60),初始状态为top=0。现经过一系列正常的入栈与退栈操作后,top=60,则栈中的元素个数为( )

A. 60 B. 59 C. 0 D. 1

——————

3. 设栈的顺序存储空间为S(1:m),初始状态为top=0。现经过一系列正常的入栈与退栈操作后,top=m+1,则栈中的元素个数为( )

A. 不可能 B. m+1 C. 0 D. m

——————

4. 设栈的顺序存储空间为S(1:m),初始状态为top=m+1。现经过一系列正常的入栈与退栈操作后,top=1,则栈中的元素个数为( )

A. 不可能 B. m+1 C. 0 D. m

——————

答案与解析见下期哦~

上期解答

1. 下列叙述中正确的是( D )

A. 在链表中,如果每个结点有两个指针域,则该链表一定是线性结构

B. 在链表中,如果有两个结点的同一个指针域的值相等,则该链表一定是线性结构

C. 在链表中,如果每个结点有两个指针域,则该链表一定是非线性结构

D. 在链表中,如果有两个结点的同一个指针域的值相等,则该链表定是非线性结构

【本题选项:D】

【题目解析】在链表中,每个结点只有一个数据域和一个指针域,故A、C错。如果有两个结点的同一个指针域的值相等,即指向同一个结点,则指向的这个结点有两个直接前驱,是非线性结构,故B错,D正确。

——————

2. 下列叙述中正确的是( B )

A. 链表只能是非线性结构

B. 链表可以是线性结构也可以是非线性结构

C. 对分查找也适用于有序链表

D. 快速排序也适用于线性链表

【本题选项:B】

【题目解析】根据定义,线性链表(线性表链式存储结构中的单链表),可以组成线性结构,链表中包含线性结构和非线性结构,故A错,B正确。C、D项还没学到,不用管。

文章中如有错误,欢迎批评指出

更多文档资料,请关注百度文库

举报/反馈

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值