收藏 分享(赏)

南京工业大学 数据结构 作业答案 作业2.doc

上传人:eukav 文档编号:6213476 上传时间:2019-04-02 格式:DOC 页数:4 大小:42.50KB
下载 相关 举报
南京工业大学 数据结构 作业答案 作业2.doc_第1页
第1页 / 共4页
南京工业大学 数据结构 作业答案 作业2.doc_第2页
第2页 / 共4页
南京工业大学 数据结构 作业答案 作业2.doc_第3页
第3页 / 共4页
南京工业大学 数据结构 作业答案 作业2.doc_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

1、第二次作业1. 试比较顺序存储结构和链式存储结构的优缺点。在什么情况下用顺序表比链表好?2 .描述以下三个概念的区别:头指针、头结点、首元结点(第一个元素结点) 。在单链表中设置头结点的作用是什么?3. 已知 P 结点是双向链表的中间结点,试从下列提供的答案中选择合适的语句序列。a在 P 结点后插入 S 结点的语句序列是- 。b在 P 结点前插入 S 结点的语句序列是-。c删除 P 结点的直接后继结点的语句序列是-。d删除 P 结点的直接前驱结点的语句序列是-。e删除 P 结点的语句序列是-。(1)P-next=P-next-next; (10) P-prior-next=P;(2)P-pri

2、or=P-prior-prior; (11) P-next-prior =P;(3) P-next=S; (12)P-next-prior=S;(4) P-prior=S; (13) P-prior-next=S;(5)S-next=P; (14) P-next-prior=P-prior(6)S-prior=P; (15)Q=P-next;(7) S-next= P-next; (16)Q= P-prior; (8) S-prior= P-prior; (17)free(P);(9) P-prior-next=p-next; (18)free(Q);4. 编写程序,将若干整数从键盘输入,以单

3、链表形式存储起来,然后计算单链表中结点的个数(其中指针 P 指向该链表的第一个结点) 。5 假设有一个带表头结点的链表,表头指针为 head,每个结点含三个域: data, next 和prior。其中 data 为整型数域, next 和 prior 均为指针域。现在所有结点已经由 next 域连接起来,试编一个算法,利用 prior 域(此域初值为 NULL)把所有结点按照其值从小到大的顺序链接起来。6. 已知线性表的元素按递增顺序排列,并以带头结点的单链表作存储结构。试编写一个删除表中所有值大于 min 且小于 max 的元素(若表中存在这样的元素)的算法。1. 【严题集 2.3】试比较

4、顺序存储结构和链式存储结构的优缺点。在什么情况下用顺序表比链表好?答: 顺序存储时,相邻数据元素的存放地址也相邻(逻辑与物理统一) ;要求内存中可用存储单元的地址必须是连续的。优点:存储密度大(1?) ,存储空间利用率高。缺点:插入或删除元素时不方便。链式存储时,相邻数据元素可随意存放,但所占存储空间分两部分,一部分存放结点值,另一部分存放表示结点间关系的指针优点:插入或删除元素时很方便,使用灵活。缺点:存储密度小(next=P-next-next; (10) P-prior-next=P;(2)P-prior=P-prior-prior; (11) P-next-prior =P;(3) P

5、-next=S; (12)P-next-prior=S;(4) P-prior=S; (13) P-prior-next=S;(5)S-next=P; (14) P-next-prior=P-prior(6)S-prior=P; (15)Q=P-next;(7) S-next= P-next; (16)Q= P-prior; (8) S-prior= P-prior; (17)free(P);(9) P-prior-next=p-next; (18)free(Q);解答:a.(12) (7) ( 3) (6) 3 必须在 12 和 7 的后面,其余的顺序可变b.(13) (8) (4) (5)

6、 同上c.(15) (1) ( 11) (18) 不可变d.(16) (2) (10) (18) 不可变e.(9) (14) ( 17)4. 编写程序,将若干整数从键盘输入,以单链表形式存储起来,然后计算单链表中结点的个数(其中指针 P 指向该链表的第一个结点) 。 注:统计结点个数是【省统考样题】的要求,也是教材 P60 4-6 计算链表长度的要求,编程又简单,很容易作为考题。解:编写 C 程序如下(已上机通过):全局变量及函数提前说明:-#include#includetypedef struct liuyuint data;struct liuyu*link;test;liuyu *p,

7、*q,*r,*head;int m=sizeof(test);void main () /*第一步,从键盘输入整数,不断添加到链表*/int i;head=(test*)malloc(m); /*m=sizeof(test);*/p=head; i=0;while (i!=-9999) printf(“/ninput an integer stop by -9999:“);scanf(“%d“,p-data=i; /* input data is saved */p-link=(test*)malloc(m); /*m=sizeof(test);*/q=p;p=p-link;q-link=NU

8、LL; /*原先用 p-link=NULL 似乎太晚!*/p=head; i=0; /*统计链表结点的个数并打印出来 */while (p-link!=NULL)printf(“%d“,p-data);p=p-link;i+;printf(“n node number=%dn“, i-1); /*结点的个数不包括-9999*/5. 定义类型 LinkList 如下:typedef struct node int data;struct node *next,*prior;LinkList;此题可采用插入排序的方法,设 p 指向待插入的结点,用 q 搜索已由 prior 域链接的有序表找到合适位

9、置将 p 结点链入。算法描述如下:insert (LinkList *head) LinkList *p,*s,*q;p=head-next; /p 指向待插入的结点,初始时指向第一个结点while(p!=NULL) s=head; / s 指向 q 结点的前趋结点q=head-prior; /q 指向由 prior 域构成的链表中待比较的结点while(q!=NULL) q=q-prior;s-prior=p;p-prior=q; /结点 p 插入到结点 s 和结点 q 之间p=p-next;6. 算法描述如下:delete(LinkList *head, int max, int min) linklist *p, *q;if (head!=NULL) q=head;p=head-next;while(p!=NULL) while(p!=NULL) q-next=p;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 网络科技 > 数据结构与算法

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报