数据结构——第二章 线性表

一、单选题(共13题,48.2分) 

1、表长为n的顺序存储的线性表,当在任何位置上插入或删除一个元素的概率相等时,插入一个元素所需移动元素的平均次数为( ),删除一个元素需要移动的元素的个数为( )。 
A、 (n-1)/2 //删除
B、 n 
C、 n+1 
D、 n-1 
E、 n/2 //插入
F、 (n+1)/2 
G、 (n-2)/2 
正确答案: EA


2、线性表是具有n个( )的有限序列。 
A、 表元素 
B、 字符 
C、 数据元素 
D、 数据项 
E、 信息 
正确答案: C


3、“线性表的逻辑顺序与存储顺序总是一致的。”这个结论是( )。 
A、 正确的 
B、 错误的 
C、 不一定,与具体的结构有关 
正确答案: B


4、线性表采用链式存储结构时,要求内存中可用存储单元的地址( )。 
A、 必须是连续的 
B、 部分地址必须是连续的 
C、 一定是不连续的 
D、 连续或不连续都可以 
正确答案: D


5、带头结点的单链表为空的判定条件是( )。 
A、 head==NULL 
B、 head->next==NULL 
C、 head->next=head 
D、 head!=NULL 
正确答案: B


6、不带头结点的单链表head为空的判定条件是( )。 
A、 head==NULL 
B、 head->next==NULL 
C、 head->next=head 
D、 head!=NULL 
正确答案: A


7、非空的循环单链表head的尾结点P满足( )。 
A、 p->next==NULL 
B、 p==NULL 
C、 p->next==head 
D、 p==head 
正确答案: C


8、在一个具有n个结点的有序单链表中插入一个新结点并仍然有序的时间复杂度是( )。 

正确答案: B

 

9、在一个单链表中,若删除p所指结点的后继结点,则执行( )。 
A、 p->next=p->next->next; 
B、 p=p->next; p->next=p->next->next; 
C、 p->next=p->next; 
D、 p=p->next->next; 
正确答案: A

10、在一个单链表中,若在p所指结点之后插入s所指结点,则执行( )。 
A、 s->next=p; p->next=s; 
B、 s->next=p->next; p->next=s; 
C、 s->next=p->next; p=s; 
D、p->next=s; s->next=p;
正确答案: B


11、在一个单链表中,已知q是p的前趋结点,若在q和p之间插入结点s,则执行( ) 
A、 s->next=p->next; p->next=s; 
B、 p->next=s->next; s->next=p; 
C、 q->next=s; s->next=p; 
D、 p->next=s; s->next=q; 
正确答案: C

12、假设双链表结点的类型如下:
typedef struct linknode{
int data; //数据域
struct linknode *llink; //指向前趋结点的指针域
struct linknode *rlink; //指向后继结点的指针域
}bnode
现将一个q所指新结点作为非空双向链表中的p所指结点的前趋结点插入到该双链表中,能正确完成此要求的语句段是( )。 
A、 q->rlink=p;
q->llink=p->llink;
p->llink=q;
p->llink->rlink=q; 
B、 p->llink=q;
q->rlink=p;
p->llink->rlink=q;
q->llink=p->llink; 
C、 q->llink=p->rlink;
q->rlink=p;
p->link->rlink=q;
p->llink=q; 
D、 以上都不对 
正确答案: D


13、如上题结点结构,如在此非空循环双向链表的结点p之后插入结点s的操作序列是( ) 
A、 p->rlink=s;        
s->llink=p;
p->rlink->llink=s; 
s->rlink=p->rlink; 
B、 p->rlink=s;        
p->rlink->llink=s;
s->llink=p;        
s->rlink=p->rlink; 
C、 s->llink=p;        
s->rlink=p->rlink;
p->rlink=s;        
p->rlink->llink=s; 
D、 s->llink=p;        
s->rlink=p->rlink;
p->rlink->llink=s; 
p->rlink=s; 
正确答案: D
 

二、多选题(共1题,3.7分) 
1、在一个长度为n(n>1)的单链表上,设有头和尾两个指针,执行( )操作与链表的长度无关。 
A、 删除单链表中的第一个元素 
B、 删除单链表中最后一个元素 
C、 在单链表第一个元素前插入一个新元素 
D、 在单链表最后一个元素后插入一个新元素 
正确答案: ACD

三、填空题(共13题,48.1分)

 1、在线性结构中,第一个结点____前趋结点,其余每个结点有且只有____ 个前趋结点。 
正确答案: 
第1空:没有
第2空:1


2、在顺序表中插入或删除一个元素,需要平均移动____元素,具体移动的元素个数与____有关。 
正确答案: 
第1空:表中一半
第2空:该元素的位置


3、已知L是无表头结点的单链表,试从下列提供的答案中选择合适的语句序列,分别实现:
⑴ 表首插入S结点的语句序列是____;
⑵ 表尾插入S结点的语句序列是____。
①P->next=S; ②P=L; ③L=S;
④P->next=S->next; ⑤S->next=P->next;
⑥.S->next=L; ⑦S->next=NULL;
⑧while(P->next!=Q) P=P->next;
⑨while(P->next!=NULL) P=P->next; 
正确答案: 
第1空:⑥③
第2空:②⑨①⑦

4、已知L是带表头结点的非空单链表,试从下列提供的答案中选择合适的语句序列。
⑴ 删除首元结点的语句序列是____;
⑵ 删除尾元结点的语句序列是____。
① P=P->next; ② P->next=P->next->next;
③ while(P!=NULL) p=p->next;
④ while(Q->next!=NULL) {P=Q; Q=Q->next;}
⑤ while(P->next!=Q) P=P->next;
⑥ Q=P; ⑦ Q=P->next; ⑧ P=L;
⑨ L=L->next; ⑩ frre(Q); 
正确答案: 
第1空:⑧⑦②⑩
第2空:⑧⑥④②⑩

5、已知L是带表头结点的非空单链表,且P结点既不是首元结点,也不是尾元结点,试从下列提供的答案中选择合适的语句序列。
⑴ 删除P结点的直接后继结点的语句序列是____;
⑵ 删除P结点的直接前趋结点的语句序列是____;
① P->next=P->next->next; ② P=P->next->next;
③ while (P ->next!=Q) P=P->next;
④ while(P->next->next=Q) P=P->next; 
⑤ Q=P; ⑥ Q=P->next; ⑦ P=L;
⑧ L=L->next; ⑨ free(Q); 
正确答案: 
第1空:⑥①⑨
第2空:⑤⑦④①⑨

6、已知结点编号,在各结点查找概率相等的情况下,从n个结点的单链表中查找一个结点,平均要访问____个结点,从n个结点的双链表中查找一个结点,平均要访问____个结点。 
正确答案: 
第1空:n/2
第2空:n/4
7、对于一个具有n个结点的单链表,在已知p所指结点后插入一个新结点的时间复杂度是____;在值域为给定值的结点后插入一个新结点的时间复杂度是____; 
正确答案: 
第1空:O(1)
第2空:O(n)

8、单链表是____的链接存储表示。 
正确答案: 
第1空:线性表

9、单链表中设置头结点的作用是____。 
正确答案: 
第1空:           

10、在单链表中,除首元结点外,任一结点的存储位置由____指示。 
正确答案:第1空:其直接前趋结点的链域

11、在非空双向循环链表中,在结点q的前面插入结点p的过程如下:
p->prior=q->prior; q->prior->next=p;
p->next=q; ____; 
正确答案: 
第1空:q->prior=p

12、在双向链表中,每个结点有两个指针域,一个指向____,另一个指向____。 
正确答案: 
第1空:前驱结点
第2空:后继结点

13、顺序表中逻辑上相邻的元素的物理位置____紧邻。单链表中逻辑上相邻的元素的物理位置____紧邻。 
正确答案: 
第1空:必定
第2空:不一定

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Andy℡。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值