第十章测试
1.

下面关于void * malloc (unsigned int size)函数描述错误的(   )。


A:函数的返回值为指向该区域起始地址的指针 B:若分配不成功则返回NULL C:malloc函数申请的空间若不释放,也有可能被其他程序申请 D:malloc()函数用来动态分配内存,所分配的空间长度为size
答案:C
2.

有如下定义:

struct node

{  int data;

  struct node *next; 

}a,b,c;

下列哪个答案可以将变量a,b,c在内存中的位置连接起来(    )。



A:a=b=c; B:a.next=&b;  b.next=&c; C:a.data=&b; b.data=&c; D:a.next=b.next=c.next; 3.

有以下结构体说明和变量的定义,且指针p指向结点a,指针q指向结点b。则把结点b连接到结点a之后的语句是(   )  。

struct node {

int data;

struct node *next;

}

struct node a,b,*p=&a,*q=&b;



A:p->next=b; B:(*p)->next=q; C:a.next=q; D:p.next=&b; 4.

下列关于线性链表的叙述中,正确的是(  )


A:其他三种说法都不对 B:各数据结点的存储空间必须连续 C:各数据结点的存储顺序与逻辑顺序必须要一致 D:进行插入和删除时,不需要移动链表中的元素 5.


有以下结构体说明和变量定义:

struct node{

int data;

struct *next;}*p1,*q,*p2;

下面的链表中,在p1p2之间插入一个元素q,正确的操作是( 

图片.png


A:p2->next=q;  q->next=NULL; B:p1->next=q;  q->next=p2; C:p1->next=p2;p2->next=q; D:p1->next=q;  q->next=NULL; 6.

有以下结构体说明和变量定义:

struct node{

int data;

struct *next;}*p1,*q,*p2;

下面的链表中,在p1p2之间删除一个元素q,正确的操作是( 

图片.png
A:p1->next=q;  q->next=p2; B:p1->next=q->next; C:p1->next=p2,p2->next=q; D:p1->netx=p2->next; 7.

现有以下结构体说明和变量定义,如图所示,指针p、q、r分别指定一个链表中连续的3个结点。则下列语句表示删除q节点数据的是( )。

struct node 

{

       double data;

       struct node*next;

}*p, *q, *r;

图片.png


A:p=r; B:q->next=p; C:p->next= q->next ; D:q->next=r->next; 8.

在单链表指针为p的结点之后插入指针为s的结点,正确的操作是(     )。


A: s->next=p->next;p->next=s; B:p->next=s;p->next=s->next; C:p->next=s;s->next=p->next;  D:p->next=s->next;p->next=s; 9.

若已建立下面的链表结构,指针p、s分别指向图中所示节点,则不能将s所指的节点插入到链表末尾的语句组是( )。

图片.png


A:p=p->next;  s->next=p;  p->next=s; B:p=p->next;  s->next=p->next;    p->next=s; C:s->next=NULL;  p=p->next;  p->next=s; D: p=(*p).next;      (*s).next=(*p).next;    (*p).next=s; 10.

有如下定义:则下列哪条语句可以将图中b结点删除(   

struct node { int data;

        struct node *next;  

        }a,b,c;


图片.png


A:a.next=b.next; B:a.next =c.next; C:a.next=&b;  b.next=&c; D:a=c;

温馨提示支付 ¥3.00 元后可查看付费内容,请先翻页预览!
点赞(164) dxwkbang
返回
顶部