算法与数据结构专项练习4

1.在一个单链表中,若删除P所指结点的后续结点,则执行?
正确答案: C
p=p->next;p->next=p->next->next
p->next=p->next
p->next=p->next->next
p=p->next->next
解析:

让p的下一个结点指向下一个的结点的下一个结点,然后free掉(p->next)
2.设指针变量p指向双向链表中结点A,指针变量s指向被插入的结点X,则在结点A的后面插入结点X的操作序列为()。
正确答案: D
p->right=s; s->left=p; p->right->left=s; s->right=p->right;
s->left=p;s->right=p->right;p->right=s; p->right->left=s;
p->right=s; p->right->left=s; s->left=p; s->right=p->right;
s->left=p;s->right=p->right;p->right->left=s; p->right=s;

解析:
先修改待插入结点的前驱和后继,再修改原来两个结点中后一个结点的前驱以及前一个结点的后继,可以简单的记为前驱,后继,前驱,后继的修改顺序
3.向一个有127个元素的顺序表中插入一个新元素并保持原来顺序不变,平均要移动( )元素。
正确答案: B
8
63.5
63
7
解析:

平均要移动63.5次;
如果插在第一个位置那就要移动127个元素(即127次);
如果插在第二个位置那就要移动126个元素(即126次);



如果插在最后一个位置那不用移动移动次数为0;
就是从0~127的一个递增数列(想倒过来递减也行);
所以平均要移动的次数N=(0+127)/2=63.5;
4.下面关于二分查找的叙述中正确的是:
正确答案: D
表必须有序,表可以顺序方式存储,也可以链表方式存储
表必须有序且表中数据必须是整型,实型或字符型
表必须有序,而且只能从小到大排列
表必须有序,且表只能以顺序方式存储
解释:

二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。
https://blog.csdn.net/qq_40817827/article/details/89418006
5.在一个长度为 n ( n>1 )的单链表上,设有头和尾两个指针,执行 操作与链表的长度有关。
正确答案: B
删除单链表中的第一个元素
删除单链表中的最后一个元素
在单链表第一个元素前插入一个新元素
在单链表最后一个元素后插入一个新元素
解释:

A
头指针是指向第一个元素(结点)的指针。
当删除单链表中的第一个元素时只需要将头指针指向第二个元素,然后释放第一个元素储存空间申请的内存。与链表长度无关。

ListNode *temp = head->next;
head->next = temp->next;
free(temp);

B
尾指针是指向最后一个元素(结点)的指针,与头指针类似。
当删除单链表中的最后一个元素时 由于不是双向链表,所以要从头指针开始,一直遍历直到倒数第二个元素,将倒数第二个元素(结点)指向NULL,释放原末端元素(结点)空间后,将尾指针等于新的末端元素(结点)。所以与链表长度有关。

ListNode *p = head;
while(p->next != rear) p = p->next;
p->next = NULL;
free(r);
r = p;

C
在单链表第一个元素前插入一个新元素时,只需要把新的元素(结点)指向原来的第一个元素(结点),然后使头指针指向新的元素(结点)。与链表长度无关。

new_point->next = head->next;
head->next = new_point;

D
在单链表最后一个元素后插入一个新元素时,只需先将新结点指向NULL,然后将尾指针指向的原末端结点指向新的元素(结点),最后将尾指针指向新的元素(结点)。与链表长度无关。

new_point->next = NULL;
rear->next = new_point;
rear = new_point;

6.
(1)静态链表既有顺序存储的优点,又有动态链表的优点。所以,它存取表中第i个元素的时间与i无关。
(2)静态链表中能容纳的元素个数的最大数在表定义时就确定了,以后不能增加.
(3)静态链表与动态链表在元素的插入、删除上类似,不需做元素的移动。
以上错误的是()
正确答案: B
(1),(2)
(1)
(1),(2),(3)
(2)
解释:

静态链表是用数组存储节点数据,模拟链表的实现,但是没有用到指针。每个数组节点包括两部分:data域和cursor(游标)域。data存储数据,cursor指明下个元素在数组中的下标。
(1)存取第i个元素时,需要从头遍历到i-1和元素,由第i-1个节点的cursor,才能知道第i个元素存储的位置,因此和i是相关的。
(2)使用数组对元素进行存储,在定义时大小已经确定。
(3)插入和删除操作无需移动元素,只需要修改cursor游标的值即可,就像修改动态链表中的指针一样。
7.串是一种特殊的线性表,其特殊性体现在( )。
正确答案: B
可以顺序存储
数据元素是一个字符
可以链接存储
数据元素可以是多个字符
解释
:串是一种特殊的线性表,它的每个结点是一个字符,所以串也称作字符串。
8.下面描述中正确的为?
正确答案: C D
线性表的逻辑顺序与物理顺序总是一致的。
线性表的顺序存储表示优于链式存储表示。
线性表若采用链式存储表示时所有结点之间的存储单元地址可连续可不连续。
二维数组是其数组元素为线性表的线性表。
解析:

A,链式存储情况下不一致
B,优劣要看使用情况
D,二维数组是顺序存储的线性表,元素就是线性表中的元素

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值