ImageVerifierCode 换一换
格式:DOCX , 页数:22 ,大小:83.84KB ,
资源ID:5438054      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5438054.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数据结构作业本.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数据结构作业本.docx

1、数据结构作业本数据结构学习中心: 专 业: 学 号: 姓 名: 作业练习一 (第二章)一、选择题1、以下关于线性表的说法不正确的是( )。 A)线性表中的数据元素可以是数字、字符、记录等不同类型。B)线性表中包含的数据元素个数不是任意的。 C)线性表中的每个结点都有且只有一个直接前趋和直接后继。 D)存在这样的线性表:表中各结点都没有直接前趋和直接后继。2、线性表的顺序存储结构是一种( )的存储结构。 A)随机存取 B)顺序存取 C)索引存取 D)散列存取3、在顺序表中,只要知道( ),就可在相同时间内求出任一结点的存储地址。A)基地址 B)结点大小 C)线性表大小 D)基地址和结点大小4、下

2、面关于线性表的叙述中,错误的是哪一个?( )A)线性表采用顺序存储,必须占用一片连续的存储单元。B)线性表采用顺序存储,便于进行插入和删除操作。C)线性表采用链接存储,不必占用一片连续的存储单元。D)线性表采用链接存储,便于插入和删除操作。5、线性表采用链表存储时其存储地址要求()。A)必须是连续的;B)部分地址必须是连续的;C)必须是不连续的;D)连续和不连续都可以。6、一个长度为n的顺序存储线性表中,向第i个元素(1in+1)之前插入一个新元素时,需要从后向前依次后移( )个元素。A)n-i B)n-i+1 C)n-i-1 D)i7、( )运算中,使用顺序表比链表好。 A)插入 B)删除

3、C)根据序号查找D)根据元素值查找8、个具有n个结点的有序单链表中插入一个新结点并仍然有序的时间复杂度是( )。 A) O(1) B) O(n) C) O(n2) D) O(log2n)9、在一个长度为n的顺序存储线性表中,删除第i个元素(1in+1)时,需要从前向后依次前移( )个元素。A)n-i B)n-i+1 C)n-i-1 D)i10、在一个长度为n的线性表中顺序查找值为x的元素时,查找时的平均查找长度(即x同元素的平均比较次数,假定查找每个元素的概率都相等)为( )。A)n B)n/2 C)(n+1)/2 D)(n-1)/211、在一个带头结点单链表HL中,若要向表头插入一个由指针p

4、指向的结点,则执行( )。 A)HL = p; p-next = HL; B)p-next = HL; HL = p; C)p-next = HL; p = HL; D)p-next = HL-next; HL-next = p;12、在一个单链表HL中,若要在指针q所指的结点的后面插入一个由指针p所指的结点,则执行( )。 A)q-next = p-next ; p-next = q; B)p-next = q-next; q = p; C)q-next = p-next; p-next = q; D)p-next = q-next ; q-next = p;13、在一个单链表HL中,若要删

5、除由指针q所指向结点的后继结点,则执行( )。A)p = q-next ; p-next = q-next; B)p = q-next ; q-next = p;C)p = q-next ; q-next = p-next; D)q-next = q-next-next; q-next = q;14、在双向链表指针p所指的结点前插入一个指针q所指的结点操作是( )。A)p-Prior=q;q-Next=p;p-Prior-Next=q;q-Prior=q;B)p-Prior=q;p-Prior-Next=q;q-Next=p;q-Prior=p-Prior;C)q-Next=p;q-Prior

6、=p-Prior;p-Prior-Next=q;p-Prior=q;D)q-Prior=p-Prior;q-Next=q;p-Prior=q;p-Prior=q;二、填空题1、对于一个具有n个结点的单链表,在已知的结点*p后插入一个新结点的时间复杂度为(),在给定值为x的结点后插入一个新结点的时间复杂度为()。2、根据线性表的链式存储结构中每一个结点包含的指针个数,将线性链表分成()和()。3、顺序存储结构是通过( )表示元素之间的关系的;链式存储结构是通过( )表示元素之间的关系的。4、对于双向链表,在两个结点之间插入一个新结点需修改( )个指针,单链表为( )个。5、循环单链表的最大优点是

7、( ) 。6、在无头结点的单链表中,第1个结点的地址存放在头指针中,其他结点的存储地址存放在( )结点的next域中。7、带头结点的双循环链表L为空表的条件是()。8、当线性表的元素总数基本稳定,且很少进行插入和删除操作,但要求以最快的速度存取线性表中的元素时,应采用( )存储结构。三、问答题与算法题1、试描述头指针、头结点、首结点的区别、并说明头指针和头结点的作用。2、何时选用顺序表、何时选用链表作为线性表的存储结构为宜?3、为什么在单循环链表中设置尾指针比设置头指针更好?4、写出下图双链表中对换值为23和15的两个结点相互位置时修改指针的有关语句。结点结构为:(prior,data,nex

8、t) 5、下述算法的功能是什么?LinkList ABC(LinkList L) / L 是无头结点单链表if( L&L-next ) Q=L;L=L-next;P=L;while (P-next) P=P-next;P-next=Q; Q-next=NULL;return L; 6、Void AA(SqList &L, int i, int x) if(i=1&i=i;j - -) Aj+1=Aj; Ai=x; else exit(ERROR); 假定调用该算法时线性表L的内容为(15,26,37,48,55),i为3,x为51,则调用返回后该单链表的内容变为什么?7、设顺序表L是一个递减有

9、序表,试写一算法,插入元素x,插入后仍保持L的有序性。 Void sinsert(Sqlist &S, int x)8、写出从一个带头结点的单链表中删除其值等于给定值x的结点的算法函数。 Int delete(LinkList &L, int x) 9、已知递增有序的两个带头结点的单链表La,Lb分别存储了一个非空集合A,B。设计算法实现求两个集合的并集的运算A=AB void mergelist(linklist &La, linklist Lb)10、设计算法将不设表头结点的不循环的单向链表就地逆转。(第三章)一、选择题1、对于栈操作数据的原则是( )。A)先进先出 B)后进先出 C)后进

10、后出 D)不分顺序2、一般情况下,将递归算法转换成非递归应通过设置()实现。A)数组;B)线性表;C)队列;D)栈。3、栈和队列的共同点是( )A)都是先进后出 B)都是先进先出C)只允许在端点处插入和删除元素D)没有共同点4、个栈的入栈序列是abcde,则栈的不可能的输出序列是( )。 A)edcba B) decba C)dceab D)abcde5、在对栈的操作中,能改变栈的结构的是( )。 A)StackLength(S) B)StackEmpty(S) C)GetTop(S) D)ClearStack(S)6、在一个栈顶指针为HS的(不带头结点)链栈中将一个S指针所指的结点入栈,执行

11、()。 A)HS-next=s; B)S-next=HS-next;HS-next=s; C)S-next=HS; HS=s; D)S-next=HS;HS=HS-next;7、若已知一个栈的入栈序列是1,2,3,n,其输出序列是p1,p2,p3,pn,若p1=n,则pi=( )。 A)I B)n-i C)n-i+1 D)不确定8、若用一个大小为的数组来实现循环队列,且当前尾指针rear和头指针front的值分别为和,当从队列中删除一个元素,再加入两个元素后,尾指针rear和头指针front的值分别是()。A)和;B)和;C)和;D)和。9、输入序列为ABC,可以变为BAC时,经过的栈操作为(

12、 )A)push,pop,push,pop,push,pop B)push,push,push,pop,pop,pop C)push,push,pop,pop,push,pop D)push,pop,push,push,pop,pop10、设用一个大小m=60的顺序表Am表示一个循环队列,如果当前的尾指针rear=32,头指针front15, 则当前循环队列的元素个数是( )。 A)42 ;B)16 ;C)17 ;D)41 。11、设用顺序表an表示循环队列,头、尾指针分别为front和rear,则判断队列为空的条件是( ),判断队列满的条件是()。(1)A)a.front +1= =a.re

13、ar ; B)a.front = = a.rear +1;C)a.front = = 0 ; D)a.front = = a.rear。(2) A)(a.rear -1) % n = a.front ;B)(a.rear +1) % n = a.front;C) a.rear =( a.front-1) % n; D)a.rear = (a.front +1) % n 。12、循环队列存储在数组A0.m中,则入队时的操作为( )。A)rear=rear+1 B)rear=(rear+1) mod (m-1) C)rear=(rear+1) mod m D)rear=(rear+1)mod(m+

14、1) 13、在解决计算机主机与打印机之间速度不匹配问题时通常设置一个打印数据缓冲区,主机将要输出的数据依次写入该缓冲区,而打印机则从该缓冲区中取出数据打印,该缓冲区应该是一个()结构。A)栈; B)队列; C)数组; D)线性表。二、填空题1、在栈中,可进行插入和删除操作的一端称( )。2、在作进栈运算时,应先判别栈是否( ),在作退栈运算时应先判别栈是否( )。当栈中元素为n个,作进栈运算时发生上溢,则说明该栈的最大容量为( )。3、栈的特点是(),队列的特点是()。4、由于链栈的操作只在链表头部进行,所以没有必要设置()结点。5、带头结点的单链表L是空表的条件是( );顺序栈S是空栈的条件

15、是( );顺序栈S满的条件是( );不带头结点的链栈L是空栈的条件是( );循环队列Q是空队列的条件是( );循环队列Q是满队列的条件是( )6、用数组Q(其下标在0n-1之间,共有n个元素)表示一个循环队列,front 为当前队头元素的前一个位置,rear为队尾元素的位置,假设队列中的元素个数总小于n,则求队列中元素个数的公式是()。7、设元素入栈的顺序是、3、n ,则所有可能的出栈序列共有()种。8、在具有n个单元的循环队列中,队满时共有()个元素。三、问答题与算法题1、 设将整数1,2,3,4依次进栈,若入、出栈次序为Push(s,1), Pop(s,x1),Push(s,2),Push

16、(s,3), Pop(s,x2), Pop(s,x3),Push(s,4), Pop(s,x4 ),则出栈的数字序列为何?2、设用不带头结点的单链表表示栈,请分别写出入栈和出栈的算法。(1)int push_L(Linkstack &s SelemType e)(2)int pop_L(Linkstack &s SelemType &e)3、假设用带头结点的单循环链表表示队列,并设置一个指向尾结点的指针(无头指针),请分别写出队列的入队和出队算法。(1)int EnQueue_L(Queueptr &QL QelemType e)(2)int DeQueue_L(Queueptr &QL Qe

17、lemType &e)4、指出下述程序段的功能是什么?(1) void abc1(Stack &S) int i, arr64 , n=0 ; while (! StackEmpty(S) Pop(S,e);arrn+=e;for (i=0, idata); p=p-next;p=L; /利用原来的链表只修改数据域的值(反序)while(!stackempt(S) pop(S,e); p-data=e; p=p-next;return OK; 5、回文是指正读反读均相同的字符序列,如abba和abdba均是回文,但good不是回文。试写一个算法判定给定的用带头结点的单链表表示的字符串是否为回文

18、。Int hw1(linklist L)6、写一个将不带头结点的链栈S中所有结点均删去的算法void ClearStack( LinkStack &S)。7、写一个返回不带头结点的链栈S中结点个数的算法 int StackSize( LinkStack S).int Stacksize( LinkStack S)。作业练习二(第七章)一、选择题1、设高度为h的二叉树只有度为0和2的结点,则此类二叉树的结点数至少有( )个,至多有( )个。A)2h ; B)2h-1 ; C)2h+1;D)2 h-1; E)2 h -1; F)2 h +1。2、高度为h的完全二叉树至少有( )个结点,至多有( )

19、个结点。A)2 h ; B)2 h -1 ; C)2 h +1; D)2 h 1 。3、具有n个结点的满二叉树有( )个叶结点。A)n/2 ; B)(n+1)/2; C)(n-1)/2; D)n/2+1。4、一棵具有n个叶结点的哈夫曼树,共有( )个结点。A)2n B)2n-1 C)2n+1 D)2 n -1;5、一棵具有25个叶结点的完全二叉树最多有( )个结点。A)48; B)49; C)50; D)51。6、已知二叉树的前序和中序遍历序列分别是abdgcefh,dgbaecfh,则后序遍历序列是( )。A)bdgcefha; B)gdbecfha; C)bdgaechf; D)gdbeh

20、fca。、已知二叉树的中序遍历序列是debac,后序遍历序列是dabec,则前序遍历序列是( )。A)acbed; B)decab; C)deabc; D)cedba。8、在线索化二叉树中,t所指结点没有左子树的充要条件是( )。A)t-lefu=null B)t-ltag=1 C)t-ltag=1且t-left=null D)以上都不对9、如图所示的4棵二叉树中,( )不是完全二叉树。 A B C D二、填空题1、含有100个结点的树有( )条边。2、一棵二叉树有67个结点,这些结点的度要么是0,要么是2。这棵二叉树中度为2的结点有( )个。3、含A、B、C三个结点的不同形态的树有( )棵,

21、不同形态的二叉树有()棵。4、一棵含有n个结点的2叉树,可能达到的最大深度是( )和最小深度是( )。5、一棵哈夫曼树有19个结点,则其叶子结点的个数是( )。6、设二叉树的中序遍历序列是:ABCDEFG,后序遍历序列是:BDCAFGE。则该二叉树的前序遍历序列是:(),该二叉树的对应的森林包含()棵树。7、将一棵有50个结点的完全二叉树从根结点开始,由根向下,每一层从左至右,顺序地存储在一个一维数组bt1.50中,这棵二叉树最下面一层上最左边一个结点存储在数组元素( )中。8、已知一棵树T的边集为(I ,M),(I ,N),(E ,I),(B ,E),(B ,D),(C ,B),(G ,J)

22、,(G ,K),(A ,G),(A ,F),(H ,L),(A ,H),(C ,A)。则该树的根结点是()、叶结点是:()、树的深度是:()。三、问答题与算法题、void ABC(BiTree BT) if (BT=NULL) return; ABC(BT-lchild); Printf(“%c”,BT-data); ABC(BT-rchild); 该算法的功能是_请模仿写出另外两个类似此算法的算法,并标明这两个算法的功能。2、写出下列算法的功能Void LevelOrderTraverse (BiTree T, Status (*vist)(TelemType e) InitQueue(Q)

23、;EnQueue(Q,T);While(!QueueEmpty(Q) DeQueue(Q,p);if(Visit(p-data) return ERROR; if(p-lchild) EnQueue(Q, p-lchild); if(p-rchild) EnQueue(Q, p-rchild); return OK; 3、写出下列算法的功能Status PreOrderTraverse (BiTree T, Status (* Visit)(TelemType(e) InitStack(S);Push(S,T);While(!StackEmpty(Q) Pop(S,p);if(Visit(p-

24、data) return ERROR; if(p-rchild) Push(S, p-rchild); if(p-lchild) Push(S, p-lchild); return OK; 4、写出下列算法的功能void ABC ( BiTree BT , int & c1, int & c2 )if ( BT ! = NULL) ABC ( BT- lchild , c1,c2 ); c1 + ; if ( BT - lchild = = NULL & BT -rchild = = NULL ) c2 +; ABC ( BT - rchild , c1 , c2 ); 5、已知二叉树T的数据

25、域均为正数,写一个算法求数据域的最大值。Int maxdata(Bitree T)6、用递归方法写一个算法求二叉树的叶子数int Leafnum( BiTree T),先写出基本项和归纳项,然后写算法7、写一个算法交换二叉树所有结点的左右子树 Status Changchild( BiTree T)8、试分别画出具有3个结点的有序树和3个结点的二叉树的所有不同形态。9、一棵有11个结点的二叉树的静态链表存储结构如下表。67852mfakblcrdse9104111Lifti Datai Righti 画出该二叉树,将此二叉树转化为树或森林。10、已知二叉树的前序遍历序列是AEFBGCDHIKJ

26、,中序遍历序列是EFAGBCHKIJD,画出此二叉树,并画出它的后序线索二叉树。11、对于n个结点的完全二叉树,用1n的连续整数顺序编号,试回答下列问题:(1) 它共有多少层?各层的结点数分别是多少?(2) 各层最左边的结点的编号分别是多少?各层最右边的结点的编号分别是多少?(3) 对于编号为的结点,它的层是多少?它的双亲(若存在)的编号是多少?它的左孩(若存在)和右孩(若存在)的编号分别是多少?12、欲传输一段电文如下:CATE AT DATA CAE CATS AEA AE请你设计出这段电文中的每个字符的哈夫曼二进制编码。并计算整段电文的编码长度(第八章)一、选择题1、一个具有n个顶点的无向连通图最多有( )边,最少有( )边。A)n2; B)n(n-1); C)n(n-1)/2; D)n; E)n-1; F)n+1。2、一个具有n个顶点的有向强连通图最多有( )边,最少有( )边。A)n2; B)n(n-1) ; C)n(n-1)/2

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1