数据结构与算法分析(C++语言版)张琨版 课后答案———第二章

数据结构与算法分析(C++语言版)张琨版 课后答案———第二章)

答案来自网络,如果有错误请联系我更正(772173629),谢谢合作!

选择

1.C
2.D
3.C
4.A
5.A
6.D
7.D
8.A
9.不存在
10.D

填空

1.指针域
2.顺序存储结构、链式存储结构
3.n-i
4.s→next→next = p→next; p→next=s;
5.(r-f+m)%m
6.O(1)
7.head→next ==NULL
8.前驱结点、后继结点
9.p->next s
10.4

判断

1.错
2.错
3.对
4.错
答:静态链表具有链表的特点,存取表中第i个元素也是需要从头开始查找的。时间复杂度是O(n),所以和n有关。
5.对
6.对
7.错
8.错
9.对
10.错

简答

1、顺序存储结构。顺序表可以快速随机存取元素,不便于插入和删除元素。
2、尾指针是指向终端结点的指针,用它来表示单循环链表可以使得查找链表的开始结点和终端结点都很方便。设一带头结点的单循环链表,其尾指针为rear,则开始结点和终端结点的位置分别是rear->next->next和rear,查找时间都是O(1)。 若用头指针来表示该链表,则查找终端结点的时间为O(n)。

算法设计

1、

int DeleteX(lnode *&h,int x) {
lnode *pre = h, *p=pre->next ,*s ;
while(p != NULL && p->data !=x) {
pre =p;
p = p->next;
}
if(p!=NULL) {						找到第一个值为x的*p节点
while(p->data ==x) {			//递增排列下,删除第一个x后面重复的x
pre->next = p->next;
s = p;
p = p->next;
Delete(s);
}
return 1;
}
else return 0;						未找到值为x的节点
}

2、

void Reverse1(LinkList *&L) {
LinkList *p = L->next,*q;
L->next = NULL;
while(p!=NULL) {
q = p->next;						//用q 临时保存*p 的后继节点
p->next = L->next;
L->next = p;
p=q;
}
}
  • 2
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值