数据结构题目 第三章

 题目

1、线性表采用链式存储时,其地址( )。

A.必须是连续的

B.一定是不连续的

C.部分地址必须是连续的

D.连续与否都可以

2、顺序存储方式插入和删除数据元素效率太低,因此它不如链式存储方式好。( )

3、在双向链表中,若要求在p指针所指的结点之前插入指针为s所指的结点,则需执行下列语句:s—>next=p;s—>prior=_____;_____=s;p—>prior=s;

d436a94b495f416a9d998584bb0c7314.jpg  

4、链表不具有的特点是( )。

A.插入不需要移动元素

B.可随机访问任一元素

C.不必事先估计存储空间

D.删除不需要移动元素

5、在一个单链表中,已知q结点是p结点的前驱结点,若在q和p之间插入s结点,则执行( )。

6c92e733c90d422b9f1a0b1c899dd954.jpg  

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;

6、线性表的每个结点只能是一个简单类型,而链表的每个结点可以是一个复杂类型。( )

7、将长度为n的单链表A链接在长度为m的单链表B之后的算法时间复杂度为_。

8、对于在表的首、尾两端进行插入操作的线性表,宜采用的存储结构是( )。

A.顺序表

B.用头指针表示的单循环链表

C.用尾指针表示的单循环链表

D.单链表

9、链表的删除算法很简单,因为当删除链中某个结点后,计算机会自动地将后续的各个单元向前移动。( )

10、阅读下列算法,并补充所缺语句。

    从头指针为la的带表头结点的有序顺序表中删除所有值相同的多余元素,并释放被删除结点的空间。

void  purge_linkst(ListLink  &la){

     ListNode  *p,*q,*t;

     ElemType  temp;

     p=la—>data;

     while(p!=NULL){

             q=p;

             temp=p—>link;

             if(p!=NULL&&_____)

                       p=p—>link;

            else{

                      while(p!=NULL&&_____){

                                 t=p;

                                 p=p—>link;

                                 free(t);

                             }

                             p=q—>link;

                    }

      }

}

答案

1、D

2、错误

3、p—>prior

      p—>prior—>next

4、B

5、C

6、错误

7、O(m)

链表在B之后,需要对B遍历,长度为m,因此遍历了m次找到尾结点。

8、C

A选项顺序表插入效率低,时间复杂度为O(n);

B,D选项只适合在表的首端进行插入操作,时间复杂度为O(1);在尾端插入时,需要遍历整张表找到尾结点,时间复杂度为O(n);

C选项在表的首、尾两端进行插入操作,时间复杂度为O(1)。

9、错误

链表的删除不会发生结点的移动,顺序表的删除才会发生结点的移动。

10、temp!=p—>data

         temp==p—>data

第一次循环用temp保存第一个结点的值,用q保存当前p指向的结点。

然后,用p指针向后遍历,若当前p指针所指向结点的值与temp相等,则删除该结点;

继续向后遍历,直到不存在这样的结点或者p指针已经为空就结束该次遍历。

接着,p=q—>link使得p指针指向原来p指针的下一个结点,重复操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值