线性表习题

来源:互联网 发布:语言算法的复杂性 编辑:程序博客网 时间:2024/06/09 14:01

第2章 线性表

一、选择题

1、  在长度为n的顺序表的第i1<=i<=n+1)个位置上插入一个元素,元素的移动次数为()

An-i+1  B. n-i  C. i           D. i-1

2、若一个顺序表中第一个元素的存储地址为1000,每个元素占4个地址单元,那么,第6个元素的存储地址应是()

A1020     B1010    C1016    D1024

3、带头结点的单链表(以head为头指针)为空的判断条件是()

Ahead=null       Bhead->next==head  C. head->next==null   D. head==null

4、在单循环链表中,p指向表中任一结点,判断表不是访问结束的条件是()

AP=null   Bp=head     Cp->next!=head    D. p->next!=null

5、在一个单链表中,已知q指向p所指向结点的前驱结点,若在qp所指结点之间插入一个s所指向的新结点,则执行的操作是()

Aq->next=s;s->next=p               B.p->next=s; s->next=q

C. s->next=p->next;  p->next=s         D. p->next=s->next; s->next=p

6、在一个单链表中,若删除p指向结点的后继结点,则执行的操作为()

Aq=p->next;  p->next=p->next->next; free(q);

B. p=p->next; q=p->next; p=q->next;free(q);

C. q=p->next->next; p=p->next;free(q);

D. p=p->next->next; q=p->next;free(q);

7.下列哪一条是顺序存储结构的优点                                            

A. 插入运算方便      B. 可方便地用于各种逻辑结构的存储表示

C. 存储密度大        D. 删除运算方便

8. 下面关于线性表的叙述中,错误的是哪一个                                    

A. 线性表采用顺序存储,必须占用一片连续的存储单元。

B. 线性表采用顺序存储,便于进行插入和删除操作。

C. 线性表采用链接存储, 不必占用一片连续的存储单元

D. 线性表采用链接存储,便于进行插入和删除操作。

9. 线性表是具有n个【       】的有序序列(n>0)

A. 表元素           B. 字符          C. 数据元素        D.数据项

10. 若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用【       】存储方式最节约时间。

A. 顺序表       B.双链表      C.带头结点的双循环链表      D.单循环链表

11. 若某线性表最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用【       】存储方式最节省运算时间。

A. 单链表                 B.仅有头指针的单循环链表  

C. 双链表                 D.仅有尾指针的单循环链表

12. 若某线性表最常用的操作是在末尾插入结点和删除尾结点,则选用【       】最节省运算时间。

A. 带头结点的双循环链表          B.单循环链表  

C. 带尾指针的单循环链表          D.单链表

13. 若某线性表最常用的操作是存取第i个元素及其前驱和后继元素的值,则采用【       】存储方式最节省运算时间。

A. 单链表        B.双向链表       C.单循环链表      D.顺序表

14. 对于一个头指针为head的带头结点的单链表,判定该表为空的条件是【       

A.head==NULL                   B. head->next==NULL 

C.head->next==head            D. head!=NULL

15. 链表不具有的特点是                                                   

A. 插入、删除不需要移动元素          B.可随机访问任一元素  

C. 不必事先估计存储空间              D.所需空间与线性长度成正比

16. 单链表中,增加一个头结点的目的是为了                                

A. 使单链表至少有一个结点         B.标示表结点中首结点的位置  

C. 方便运算的实现                 D.说明单链表是线性表的链式存储

17.  在一个以h为头的单循环链中,p指针指向链尾的条件是                    

A.p->next==h          B.p->next==NULL

 C.p->next->next==h   D.p->data==-1

18. 对于一个线性表既要求能够进行快速的插入和删除,又要求存储结构能反映数据之间的逻辑关系,则应该使用                                                     

A. 顺序存储方式      B.链式存储方式     C.散列存储方式      D.以上均可以

19、一个线性表第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的地址是【   

A110    B108     C100     D120

20、向一个有127个元素的顺序表中插入一个新元素并保持原来顺序不变,平均要移动【   】个元素。

A64     B63      C63.5  (D7

21、线性表采用链式存储结构时,其地址【   】。

(A) 必须是连续的          (B)部分地址必须是连续的

(C) 一定是不连续的        (D)连续与否均可以

22 在一个单链表中,若p所指结点不是最后结点,在p之后插入s所指结点,则执行【   

As->next=p;p->next=s;    Bs->next=p->next;p->next=s;

Cs->next=p->next;p=s;    Dp->next=s;s->next=p;

23、在一个单链表中,若删除p所指结点的后续结点,则执行【   

Ap->next=p->next->next;  Bp=p->next;p->next=p->next->next;

Cp->next=p->next;        Dp=p->next->next;

24、线性表是具有n个【   】的有限序列(n≠0)

A)表元素     B)字符      C)数据元素    D)数据项

25、下列有关线性表的叙述中,正确的是(  )

A)线性表中的元素之间隔是线性关系

B)线性表中至少有一个元素

C)线性表中任何一个元素有且仅有一个直接前趋

D)线性表中任何一个元素有且仅有一个直接后继

二、填空题

1、  在一个长度为n的顺序表中,删除表中第i个元素需要向前移动_________个元素。

2、  在顺序表中插入或删除一个元素,需要平均移动_____个元素,具体移动的元素个数与_______有关。

3、  顺序表中逻辑上相邻的元素,在物理存储位置上_______相邻;链表结构中逻辑上相邻的元素,在物理位置上_______相邻。

4、  已知顺序表中一个元素的存储位置是x,每个元素占c个字节,求其后继元素的存储位置的计算公式为________;而已知单链表中某一个结点由p指向,求此后继结点存储地址的操作为________.

5、  在用p指针访问单链表时,判断不是访问结束的条件是___________,在访问单循环链表时,判断不是访问表结束的条件是____________

6、  已知p指向双向链表的中间某个结点,从给定的操作语句中选择合适的填在下面问题的要求后面。

(1)       p结点后插入s结点的语句序列是__________.

(2)       p结点前插入s结点的语句序列是__________.

(3)       删除p结点的直接后继结点的语句序列是______________.

(4)       删除p结点的直接前驱结点的语句序列是______________.

(5)       删除p结点的语句序列是_______________.

A.p->next=s;                                 B. p->prior=s;

C.s->next=p;                                 D. s->prior=p;

E.p->next=p->next->next;                        F.p->prior=p->prior->prior;

G.p->next->prior=s;                             H.p->prior->next=s;

I. s->next=p->next;                              J. q=p->next;

K.q=p->prior;                                 L. dispose(p);

M.dispose(q);                               N. s->prior=p->prior;

O.p->prior->next=p->next                      P.p->prior->prior->next=p

Q. p->next->next->prior=p            R. p->next->prior=p->prior

7、已知P为单链表中的非首尾结点,在P结点后插入S结点的语句为:_______________________

8、在非空双向循环链表中,在结点q的前面插入结点p的过程如下:

  p->prior=q->prior;

  q->prior->next=p;

p->next=q;

  ______________________;

9、已知L是无表头结点的单链表,是从下列提供的答案中选择合适的语句序列,分别实现:

  1)表尾插入s结点的语句序列是_______________________________

   (2) 表尾插入 s结点的语句序列是_______________________________

1)       p->next=s;

2)       p=L;

3)       L=s;

4)       p->next=s->next;

5)       s->next=p->next;

6)       s->next=L;

7)       s->next=null;

8)       while(p->next!=   Q)  p=p-next;

9)       while(p->next!=null) p=p->next;

三、 判断题

1、取线性表的第i个元素的时间同i的大小有关(    

2、线性表的特点是每个元素都有一个前驱和一个后继(  

3、顺序存储方式的优点是存储密度大、且插入、删除运算效率高(    

4、线性表采用链表存储时,结点的存储空间可以是不连续的(    

5、链表是采用链式存储结构的线性表,进行插入、删除操作时,在链表中比在顺序存储结构中效率高(   

6、顺序存储方式只能用于存储线性结构(   

7、顺序存储结构的主要缺点是不利于插入或删除操作(   

8、顺序存储方式插入和删除时效率太低,因此它不如链式存储方式好(   

四、完善程序(共8空,每空4分,共32分)

1.下面的函数是对不带头结点的单链表进行就地逆置的算法,该算法用L返回逆置后的链表的头指针,试在空缺处填入适当的语句。

void  reverse(linklist   &L){

   p=null;  q=L;

   while(q!=NULL){                                                  ;

       q->next=p;  p=q;

                                                                       ; }

                                                                       

}

 

2.对单链表中元素按插入方法排序的算法如下,其中L为链表的头结点指针。请填充算法中标出的空白处,完成其功能。

typedefstruct  node{ 

                          int data;  struct node *next;

                        }linknode ,*link;

void  Insertsort(link  L)

     {  link p, q,r,u;

         p=L->next;                                                     

          while(                                              )

             {

              r=L;q=L->next;            while(              &&q->data<=p->data)

                      { r=q;  q=q->next;}

                  u=p->next;                                  

                                                    ;p=u;}

        }

3、下面是一个在带头结点的单链表head中删除所有数据域值为x的节点的算法,但不完善,请在空出的地方填上适当的语句,使之成为完整的算法。

  Void  DeleX(LinkList head,  DataType x)

   {

      LinkNode *p,*q,*s;

      P=head;

      q=p->next;

      while(q!=null)

          if(q->data==x)

          {

s=q;

            q=q->next;

            free(s);

               (9)      ;}

          Else

          {

p=q;

          ________(10)_____}

}

 

一、 单项选择题

1-5: AACBA

6-10ACBCA

11-15DADBB

16-20CABBC

21-25DBACA

 

二、填空题

1n-i  2. n/2(n-1)/2,插入或删除位置     3。也,不

4X+c   p->next     5. P!=null P!=head

6. (1)IDGA (2)CNHB     (3) JQEM   (4) KPFM  (5) ORL

7  s->next=p->next;   p->next=s;   

8             q->prior=p;                 

9、(1        6)  3)             2             2)  9 1)  7)                 

三、判断题

×××ÖÖ

´Ö´

 

四、 完善程序 

        L=L->next                            q=L                     

             L=p                             p=p->next                

             p!=NULL                         p=q                  

        p->next=r->next;                 r->next=p                 

(9) p->next=q

(10)q=q->next

 

 

 

 

 

 

 

原创粉丝点击