数据结构 习题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
绪论和线性表习题
一、选择题
1.在一个单链表中,若p↑结点不是最后结点,在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;
2.与单链表相比,双链表优点之一( ).
A.插入删除操作更简单.
B.可随机访问
C.可省略表头指针和表尾指针 D、顺序访问相临结点更灵活
3.在长度为n的顺序表的第i(1≤i≤n+1)个位置上插入一个元素,元素的移动次数为( )
A、 n-i+1 B.n-i
C.i
D.i-1
4.对于只在表的首、尾两端进行插入操作的线性表,宜采用的存储结构为( )
A.顺序表
B.用头指针表示的单循环链表
C、用尾指针表示的单循环链表 D.单链表
5.在需要经常查找结点的前驱与后继的场合中,使用( )比较合适。
A.单链表B、双链表 C.顺序表 D.循环链
表
6.下面关于线性表的叙述中,错误的为( )
A.顺序表使用一维数组实现的线性表
B.顺序表必须占用一片连续的存储单元
C.顺序表的空间利用率高于链表
D、在链表中,每个结点只有一个链域
7.带头结点head的单链表为空的判断条件是( )
A. head=NUIL B、head->next=NUIL
C. head->next=head
D. head!=NUIL
8.线性表通常采用两种存储结构是( )
A、顺序存储结构和链式存储结构
B.散列方式和索引方式
C.链表存储结构和数组
D.线性存储结构和非线性存储结构
9.线性表采用链式存储时,结点的存储地址()
A.必须是不连续的
B、连续与否均可
C.必须是连续的
D.和头结点的存储地址相连续
10.将长度为n的单链表链接在长度为m的单链表之后的算法的时间复杂度为()
A.O(1) B.O(n) C、 O(m) D.O(m+n)
11、在单链表中,指针p指向元素为x的结点,实现“删除x的后继”的语句是( )
A.p=p->next;B、 p->next=p->next->next;
C.p->next=p;
D.p=p->next->next;
12.在头指针为head且表长大于1的单循环链表中,指针p指向表中某个结点,若p->next->next=head,则( )
A.p指向头结点
B.p指向尾结点
C.*p的直接后继是头结点 D、 *P的直接后继是尾
13.为了最快地对线性结构的数据进行某数据元素的读取操作,则其数据存储结构宜采用( )方式。
A、顺序存储 B.链式存储
C.索引存储
D.散列存储
答案:1-5 BDACB 6-10 DBABC 11-13 BDA
二、判断题(判断下列各小题,正确的在题后括号内打“√”,
错的打“╳”。)
1、单链表中的头结点就是单链表的第一个结点。( ╳)
2、所谓数据的逻辑结构指的是数据元素之间的逻辑关系。(√)
3、在线性结构中,每个结点都有一个直接前驱和一个直接后继。
( ╳)
三、填空题
1、在单链表中设置头结点的作用_ 。
2、.设head为带有头结点的单链表的头指针,则判断单链表为空的条件是:_________。
3、.带头结点的循环链表L为空表的条件是_ _ __。带头结点的双循环链表L为空表的条件是_ 。
4、在如图所示的链表中,若在指针p所指的结点之后插入数据域值相继为a和b的两个结点,则可用下列两个语句实现该操作,它们依次是_ ______和_______。
5、.通常单链表的头结点指的是_ _______;单链表的首结点指的是__ ______。
6、在一个带头结点的单循环链表中,p指向尾结点的直接前驱,则指向头结点的指针head可用p表示为。
7、从顺序表中删除一个元素时,表中所有在被删元素之后的元素均需____ ________一个位置。
1、简化插入删除算法.
2、head->next= =NULL_____。
3、L->next=L ___。L->next=L->prior=L
4、__s->next->next=p->next______和_p->next=s_______。
5、_在单链表第一个结点之前增设的一个类型相同的结点_______;__表结点中的第一个结点______。
6、p->next->next=head 。
7、__向前移动__
四、算法阅读题
1、阅读下面的算法
LinkList mynote(LinkList L)
{//L是不带头结点的单链表的头指针
if(L&&L->next){
q=L;L=L->next;p=L;
S1: while(p->next) p=p->next;
S2: p->next=q;q->next=NULL;
}
return L;
}
请回答下列问题:
(1)说明语句S1的功能;
(2)说明语句组S2的功能;