c语言用两个栈构造队列伪码,数据结构习题前三章

《数据结构习题前三章》由会员分享,可在线阅读,更多相关《数据结构习题前三章(15页珍藏版)》请在人人文库网上搜索。

1、第一章 习题 判断题 1 数据元素是数据的最小单位。( )2 记录是数据处理的最小单位。 ( ) 3 数据的逻辑结构是指数据的各数据项之间的逻辑关系。( )4算法的优劣与算法描述语言无关,但与所用计算机有关。( )5健壮的算法不会因非法的输入数据而出现莫名其妙的状态。(T )6算法可以用不同的语言描述,如果用C语言或PASCAL语言等高级语言来描述,则算法实际上就是程序了。( ) 7程序一定是算法。( )8数据的物理结构是指数据在计算机内的实际存储形式。(T )9 数据结构的抽象操作的定义与具体实现有关。( )10在顺序存储结构中,有时也存储数据结构中元素之间的关系。( )11顺序存储方式的优。

2、点是存储密度大,且插入、删除运算效率高。( )12数据结构的基本操作的设置的最重要的准则是,实现应用程序与存储结构的独立。(T )13数据的逻辑结构说明数据元素之间的顺序关系,它依赖于计算机的储存结构。 ( )答案1 2 3 4 56 7 8 9 1011 12 13填空题 1数据的物理结构包括____ 的表示和____ 的表示。2对于给定的n个元素,可以构造出的逻辑结构有 (1) , (2) , (3) ,(4)四种。3数据的逻辑结构是指_____。4一个数据结构在计算机中______称为存储结构。5抽象数据类型的定义仅取决于它的一组(1),而与(2)无关,即不论其内部结构如何变化,只要它的。

3、 (3) 不变,都不影响其外部使用。6数据结构中评价算法的两个重要指标是_______。7数据结构是研讨数据的(1)和(2),以及它们之间的相互关系,并对与这种结构定义相应的(3),设计出相应的(4)。8 一个算法具有5个特性: (1) 、 (2) 、(3),有零个或多个输入、有一个或多个输出。9计算机执行下面的语句时,语句s的执行次数为 _______ 。for(i=l;i=i;j-)s;10.下面程序段的时间复杂度为________。if (n1) sum=1;for (i=0; sumnext=p; s-prior= ________;p-prior=s;________=s;10链接存。

4、储的特点是利用________来表示数据元素之间的逻辑关系。 11顺序存储结构是通过________表示元素之间的关系的;链式存储结构是通过________表示元素之间的关系的。12对于双向链表,在两个结点之间插入一个新结点需修改的指针共 ______个,单链表为_______个。13循环单链表的最大优点是:________。14已知指针p指向单链表L中的某结点,则删除其后继结点的语句是:________15带头结点的双循环链表L中只有一个元素结点的条件是:________16在单链表L中,指针p所指结点有后继结点的条件是:__17带头结点的双循环链表L为空表的条件是:________。18在。

5、单链表p结点之后插入s结点的操作是:_______。答案1 顺序 2(n-1)/23py-next=px-next; px-next=py4n-i+15主要是使插入和删除等操作统一,在第一个元素之前插入元素和删除。第一个结点不必另作判断。另外,不论链表是否为空,链表指针不变。6O(1),O(n) 7单链表,双向链表8f-next=p-next; f-prior=p; p-next-prior=f; p-next=f;9P-prior s-prior-next10指针 11物理上相邻 指针124 213从任一结点出发都可访问到链表中每一个元素。14u=p-next; p-next=u-next;。

6、 free(u);15L-next-next=L 16p-next next=L & L-prior=L 18s-next=p-next;p-next=s;选择题1下述哪一条是顺序存储结构的优点?( )A存储密度大 B插入运算方便 C删除运算方便 D可方便地用于各种逻辑结构的存储表示2下面关于线性表的叙述中,错误的是哪一个?( )A线性表采用顺序存储,必须占用一片连续的存储单元。B线性表采用顺序存储,便于进行插入和删除操作。C线性表采用链接存储,不必占用一片连续的存储单元。D线性表采用链接存储,便于插入和删除操作。3线性表是具有n个( )的有限序列(n0)。A表元素B字符C数据元素 D数据项E。

7、信息项4若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用( )存储方式最节省时间。A顺序表 B双链表 C带头结点的双循环链表 D单循环链表5某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用( )存储方式最节省运算时间。A单链表B仅有头指针的单循环链表C双链表 D仅有尾指针的单循环链表 6 静态链表中指针表示的是( )A 内存地址B数组下标 C下一元素地址D左、右孩子地址7 链表不具有的特点是( )A插入、删除不需要移动元素 B可随机访问任一元素 C不必事先估计存储空间 D所需空间与线性长度成正比8下面的叙述不正确的是( )A线性表在。

8、链式存储时,查找第i个元素的时间同i的值成正比B 线性表在链式存储时,查找第i个元素的时间同i的值无关C 线性表在顺序存储时,查找第i个元素的时间同i 的值成正比D 线性表在顺序存储时,查找第i个元素的时间同i的值无关9(1)静态链表既有顺序存储的优点,又有动态链表的优点。所以,它存取表中第i个元素的时间与i无关。(2)静态链表中能容纳的元素个数的最大数在表定义时就确定了,以后不能增加。(3)静态链表与动态链表在元素的插入、删除上类似,不需做元素的移动。以上错误的是( )A(1),(2) B(1) C(1),(2),(3) D(2)10若长度为n的线性表采用顺序存储结构,在其第i个位置插入一个。

9、新元素的算法的时间复杂度为( )(1link=head Bp-link=NIL Cp=NIL Dp= head14循环链表H的尾结点P的特点是( )。AP-NEXT=HBP-NEXT:= H-NEXT CP=H DP=H-NEXT答案1 A 2 B 3 C 4 A 5 D6 C 7 B 8B,C 9B 10C 11C 12C 13A 14A 应用题 1线性表有两种存储结构:一是顺序表,二是链表。试问:(1)如果有n个线性表同时并存,并且在处理过程中各表的长度会动态变化,线性表的总数也会自动地改变。在此情况下,应选用哪种存储结构? 为什么?(2)若线性表的总数基本稳定,且很少进行插入和删除,但要。

10、求以最快的速度存取线性表中的元素,那么应采用哪种存储结构?为什么? 2线性表的顺序存储结构具有三个弱点:其一,在作插入或删除操作时,需移动大量元素;其二,由于难以估计,必须预先分配较大的空间,往往使存储空间不能得到充分利用;其三,表的容量难以扩充。线性表的链式存储结构是否一定都能够克服上述三个弱点,试讨论之。3说明在线性表的链式存储结构中,头指针与头结点之间的根本区别;头结点与首元结点的关系。4如何通过改链的方法,把一个单向链表变成一个与原来链接方向相反的单向链表?5假设有两个按元素值递增次序排列的线性表,均以单链表形式存储。请编写算法将这两个单链表归并为一个按元素值递减次序排列的单链表,并要。

11、求利用原来两个单链表的结点存放归并后的单链表。6知L1、L2分别为两循环单链表的头结点指针,m,n分别为L1、L2表中数据结点个数。要求设计一算法,用最快速度将两表合并成一个带头结点的循环单链表。7已知不带头结点的线性链表list,链表中结点构造为(data、link),其中data为数据域,link为指针域。请写一算法,将该链表按结点数据域的值的大小从小到大重新链接。要求链接过程中不得使用除该链表以外的任何链结点空间。第三章 栈和队列判断题 1 消除递归不一定需要使用栈,此说法。( )2 栈是实现过程和函数等子程序所必需的结构。( )3 两个栈共用静态存储空间,对头使用也存在空间溢出问题。(。

12、 )4两个栈共享一片连续内存空间时,为提高内存利用率,减少溢出机会,应把两个栈的栈底分别设在这片内存空间的两端。( )5 栈与队列是一种特殊操作的线性表。( )6 若输入序列为1,2,3,4,5,6,则通过一个栈可以输出序列3,2,5,6,4,1。 ( )7 栈和队列都是限制存取点的线性结构。( )8若输入序列为1,2,3,4,5,6,则通过一个栈可以输出序列1,5,4,6,2,3。(F )9任何一个递归过程都可以转换成非递归过程。()10队列是一种插入与删除操作分别在表的两端进行的线性表,是一种先进后出型结构。(F )11通常使用队列来处理函数或过程的调用。(F )12循环队列通常用指针来实。

13、现队列的头尾相接。(F )13循环队列也存在空间溢出问题。( )14队列和栈都是运算受限的线性表,只允许在表的两端进行运算。(F )15栈和队列都是线性表,只是在插入和删除时受到了一些限制。( )答案1 2 3 4 5 6 7 89 10 11 12 13 14 15填空题 1栈是_______的线性表,其运算遵循_______的原则。2_______是限定仅在表尾进行插入或删除操作的线性表。3 一个栈的输入序列是:1,2,3则不可能的栈输出序列是_______。4当两个栈共享一存储区时,栈利用一维数组stack(1,n)表示,两栈顶指针为top1与top2,则当栈1空时,top1为_____。

14、__,栈2空时 ,top2为_______,栈满时为_______。5两个栈共享空间时栈满的条件_______。6在作进栈运算时应先判别栈是否_(1)_;在作退栈运算时应先判别栈是否_(2)_;当栈中元素为n个,作进栈运,算时发生上溢,则说明该栈的最大容量为_(3)_。为了增加内存空间的利用率和减少溢出的可能性,由两个栈共享一片连续的空间时,应将两栈的_(4)_分别设在内存空间的两端,这样只有当_(5)_时才产生溢出。7 多个栈共存时,最好用_______作为存储结构。8用S表示入栈操作,X表示出栈操作,若元素入栈的顺序为1234,为了得到1342出栈顺序,相应的S和X的操作串为_______。

15、。9 顺序栈用data1n存储数据,栈顶指针是top,则值为x的元素入栈的操作是_______。10表达式23+(12*3-2)/4+34*5/7)+108/9的后缀表达式是_______。11循环队列的引入,目的是为了克服_______。12用下标0开始的N元数组实现循环队列时,为实现下标变量M加1后在数组有效下标范围内循环,可采用的表达式是: M=_______。13________又称作先进先出表。14队列的特点是_______。15队列是限制插入只能在表的一端,而删除在表的另一端进行的线性表,其特点是_______。16已知链队列的头尾指针分别是f和r,则将值x入队的操作序列是____。

16、___。17区分循环队列的满与空,可以有两种方法,它们是______和______。18设循环队列用数组A1M表示,队首、队尾指针分别是FRONT和TAIL,判定队满的条件为_______。19设循环队列存放在向量sqdata0.M中,则队头指针sqfront在循环意义下的出队操作可表示为_______,若用牺牲一个单元的办法来区分队满和队空(设队尾指针sqrear),则队满的条件为_______。 20表达式求值是_______应用的一个典型例子。答案1 操作受限(或限定仅在表尾进行插入和删除操作)后进先出2 栈3 3 1 2 4 0 n+1 top1+1=top25 两栈顶指针值相减的绝对。

17、值为1(或两栈顶指针相邻)。6 (1)满 (2)空 (3)n (4)栈底 (5)两栈顶指针相邻(即值之差的绝对值为1)7 链式存储结构8 SSSS 9 data+top=x;1023123*2-4/345*7/+1089/+(注:表达式中的点()表示将数隔开,如23123是三个数)11假溢出时大量移动数据元素。12 (M+1)% N;13队列 14先进先出15先进先出 16s=(LinkedList)malloc(sizeof(LNode); s-data=x;s-next=r-next;r-next=s;r=s;17牺牲一个存储单元 设标记18(TAIL+1)MOD M=FRONT 19sq。

18、front=(sqfront+1)%(M+1) return(sqdata(sqfront) (sqrear+1)%(M+1)=sqfront20栈选择题 1 对于栈操作数据的原则是( )。A 先进先出 B 后进先出 C 后进后出 D 不分顺序2 在作进栈运算时,应先判别栈是否( B ),在作退栈运算时应先判别栈是否( A)。当栈中元素为n个,作进栈运算时发生上溢,则说明该栈的最大容量为( )。为了增加内存空间的利用率和减少溢出的可能性,由两个栈共享一片连续的内存空间时,应将两栈的 ( )分别设在这片内存空间的两端,这样,当( )时,才产生上溢。, : A 空 B 满 C 上溢 D 下溢 : 。

19、A n-1 B n C n+1 D n/2 : A 长度 B 深度 C 栈顶 D 栈底: A 两个栈的栈顶同时到达栈空间的中心点B 其中一个栈的栈顶到达栈空间的中心点C 两个栈的栈顶在栈空间的某一位置相遇D 两个栈均不空,且一个栈的栈顶到达另一个栈的栈底3 一个栈的输入序列为123n,若输出序列的第一个元素是n,输出第i(1=i=n)个元素是( )。A 不确定 B n-i+1 C i D n-i4 设栈的输入序列是1,2,3,4,则( )不可能是其出栈序列。A 1,2,4,3, B 2,1,3,4,C 1,4,3,2, D 4,3,1,2, E 3,2,1,4,5 设一个栈的输入序列是 1,2。

20、,3,4,5,则下列序列中,是栈的合法输出序列的是( )。A 5 1 2 3 4 B 4 5 1 3 2C 4 3 1 2 5 D 3 2 1 5 46某堆栈的输入序列为a, b,c ,d,下面的四个序列中,不可能是它的输出序列的是( )。A a,c,b,d B b, c,d,a C c, d,b, a D d, c,a,b 7设abcdef以所给的次序进栈,若在进栈操作时,允许退栈操作,则下面得不到的序列为( )。Afedcba B bcafed C dcefba D cabdef8输入序列为ABC,可以变为CBA时,经过的栈操作为( )。A push,pop,push,pop,push,p。

21、op B push,push,push,pop,pop,popC push,push,pop,pop,push,pop D push,pop,push,push,pop,pop9若一个栈以向量V1n存储,初始栈顶指针top为n+1,则下面x进栈的正确操作是( )。Atop=top+1; V top=x B V top=x; top=top+1C top=top-1; V top=x D V top=x; top=top-110栈在( )中应用。A 递归调用 B 子程序调用 C 表达式求值 D A,B,C11表达式a*(b+c)-d的后缀表达式是( )。Aabcd*+-B abc+*d- C a。

22、bc*+d- D -+*abcd答案1 B 21 B 22 A 23 B 24 D25C 3 B 4 D 5 D 6 D 7 D8 B 9 C 10 D 11 B 应用题 1 名词解释:栈、队列、循环队列。2 设输入序列为a,b,c,d,试写出借助一个栈可得到的两个输出序列和两个不能得到的输出序列。3 设输入序列为2,3,4,5,6,利用一个栈能得到序列2,5,3,4,6吗?栈可以用单链表实现吗?4设从键盘输入一整数的序列:a1, a2,a3,an,试编写算法实现:用栈结构存储输入的整数,当ai-1时,将ai进栈;当ai=-1时,输出栈顶整数并出栈。算法应对异常情况(入栈满等)给出相应的信息。5设表达式以字符形式已存入数组En中,#为表达式的结束符,试写出判断表达式中括号(和)是否配对的C语言描述算法:EXYX(E); (注:算法中可调用栈操作的基本算法。)6从键盘上输入一个逆波兰表达式,用伪码写出其求值程序。规定:逆波兰表达式的长度不超过一行,以$符作为输入结束,操作符只可能有+、-、*、/四种运算。例如:2 4+2*。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值