CMS专题

单选题设链表中的结点是NODE类型的结构体变量,且有NODE*p;为了申请一个新结点,并由p指向该结点,可用以下语句()。A p=(NODE*)malloc(sizeof(p));B p=(*NODE)malloc(sizeof(NODE));C p=(NODE)malloc(sizeof(p));D p=(NODE*)malloc(sizeof(NODE));

题目
单选题
设链表中的结点是NODE类型的结构体变量,且有NODE*p;为了申请一个新结点,并由p指向该结点,可用以下语句()。
A

p=(NODE*)malloc(sizeof(p));

B

p=(*NODE)malloc(sizeof(NODE));

C

p=(NODE)malloc(sizeof(p));

D

p=(NODE*)malloc(sizeof(NODE));

参考答案和解析
正确答案: D
解析: 暂无解析
如果没有搜索结果,请直接 联系老师 获取答案。
相似问题和答案

第1题:

有以下结构体说明和变量的定义,且如下图所示指针p指向变量a,指针q指向变量b。则不能把结点 b连接到结点a之后的语句是( ) struct node { char data; struct noe *next; }a,b, *p=&a, *q=&b;

A.a,next=q;

B.p.next=&b;

C.p->next=&b;

D.(*p).next=q;


正确答案:B

第2题:

有以下结构体说明和变量定义,如图所示,指针p、q、r分别指向此链表中的3个连续结点。struct node { int data;struct node *next;} *p,*q,*r;

现要将q所指结点从链表中删除,同时要保持链表的连续,以下不能完成指定操作的语句是

A.p->next=q->next;

B.p-next=p->next->next;

C.p->next=r;

D.p=q->enxt;


正确答案:D
解析:本题考查链表结点的删除。q->next中存放的是r所指结点的首地址,将r所指结点的首地址存于p->next中,则实现删除q所指结点的功能,并保持链表连续,p所指结点与r所指结点相连。

第3题:

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

struct node

{ char data;

struct node *next;

} a,b,*p=&a,*q=&b;

A.a.next=q;

B.p.next=&b;

C.p->next=&b;

D.(*p).next=q;


正确答案:B

第4题:

有以下结构体说明和变量的定义,且如图14-4所示的指针p指向变量a,指针q指向变量b。则不能把结点b连接到结点a之后的语句是______。

struct node { char data; struct node * next; }a,b,*p=&a,*q=&b:

A.a.next=q;

B.p.next=&b;

C.p->next=&b;

D.(*p).next=q;


正确答案:B

第5题:

有以下结构体说明和变量的定义,且指针p指向变量a,指针q指向变量b。则不能把结点b连接到结点a之后的语句是( )。 struct node {chardata; struct node if next; }a,b,*p:&a,*q=&b;

A.a.next=q;

B.p.next=&b;

C.p->next=&b:

D.(*p).next=q;


正确答案:B
解析: 要把结点b连接到结点a之后,必须把b的地址给a的next指针,选项A中,指针变量q保存的就是变量b的地址,选项B中的p是指针变量,应该是p->next=&b;在选项D中,用*运算符取出结构体变量,并且保存的就是b的地址,所以正确。

第6题:

有以下结构体说明和变量定义,如图所示: struct node {int data;struct node *next;} *p,*q,*r,

现妥将q所指结点从链表中删除,同时要保持链表的连续,以下不能完成指定操作的语句是______。

A.P->next=q->next;

B.p->next=(p->next->next;

C.p->next=r

D.p=q->next;


正确答案:D
解析:要想将q所指结点从链表中删除,同时保持链表的连续,必需使p结点的next指向r,在四个选项中,只有选项 D不能做到。

第7题:

以下程序中函数fun的功能是:构成—个如图所示的带头结点的单向链表,在结点的数据域中放入了具有两个字符的字符串。函数disp的功能是显示输出该单向链表中所有结点中的字符串。请填空完成函数disp。

include<stdio.h>

typedef struct node /*链表结点结构*/

{ char sub[3];

struct node *next;

}Node;

Node fun(char s) /* 建立链表*/

{ ...... }

void disp(Node *h)

{ Node *p;

p=h->next;

while([ ])

{printf("%s\n",p->sub);p=[ ];}

}

main()

{ Node *hd;

hd=fun(); disp(hd);printf("\n");

}


正确答案:p!=NULL 或 p 或 p!=0 或 p!='0' p->next 或 (*P).next
p!=NULL 或 p 或 p!=0 或 p!='0' p->next 或 (*P).next 解析:此题主要考核的是用指针处理链表。自定义结构体类型名为Node,并定义一个指向结点类型的指针next。用Node来定义头结点指针变量h,并定义另—个指针变量p指向了第—个结点,在满足p未指向最后—个结点的空指针时,输出p所指向结点的字符串,所以第—个空填p!=NULL或p或p!=0或p!='\0',然后将p指向下一个非空结点,所以第二个空填p->next或与其等效的形式,反复执行直到所有的结点都输出,即遇到p的值为NULL。

第8题:

函数min()的功能是:在带头结点的单链表中查找数据域中值最小的结点。请填空includestruc

函数min()的功能是:在带头结点的单链表中查找数据域中值最小的结点。请填空

include <stdio.h>

struct node

{ int data;

struct node *next;

};

int min(struct node *first)/*指针first为链表头指针*/

{ struct node *p; int m;

p=first->next; re=p->data; p=p->next;

for( ;p!=NULL;p=【 】)

if(p->data<m ) re=p->data;

return m;

}


正确答案:p->next
p->next 解析:本题考查的知识点是:链表的筛选。题目要求筛选出链表中最小的值,所以需要先定义一个临时变量,并将第1个值赋给该变量,就好像本题程序中定义的变量 m。然后遍历整个链表,拿链表中的每一个值跟m比较,如果找到比m小的值,就让m等于该值,这样遍历结束后,m中就是该链表的最小值了。题目中的空位于for循环的第3个表达式处,这里的for循环就是用来遍历整个链表的,所以该表达式需要完成的任务是:将循环变量p指向当前结点的下一个结点。故不难得知应填p->next。

第9题:

有以下结构说明和变量定义,指针p、q、r分别指向链表中的3个连续结点。 struct node { int data;struct node*next;)*p,*q,*r; 现要将q所指结点从链表中删除,同时要保持链表的连续,以下不能按要求完成操作的语句是( )。

A.p->next=q->next;

B.P-next=P->next->next;

C.p->next=r;

D.p=q->next;


正确答案:D
本题考查链表结点的删除,q一>next中存放的是r所指结点的首地址,将r所指结点的首地址存于p--next中,则实现删除q所指点的功能,并保持链表连续,P所指点与r所指结点相连。

第10题:

阅读以下说明和 C 代码,填补代码中的空缺,将解答填入答题纸的对应栏内。 【说明】 函数 GetListElemPtr(LinkList L,int i)的功能是查找含头结点单链表的第i个元素。若找到,则返回指向该结点的指针,否则返回空指针。 函数DelListElem(LinkList L,int i,ElemType *e) 的功能是删除含头结点单链表的第 i个元素结点,若成功则返回 SUCCESS ,并由参数e 带回被删除元素的值,否则返回ERROR 。 例如,某含头结点单链表 L 如图 4-1 (a) 所示,删除第 3 个元素结点后的单链表如 图 4-1 (b) 所示。图4-1

define SUCCESS 0 define ERROR -1 typedef int Status; typedef int ElemType; 链表的结点类型定义如下: typedef struct Node{ ElemType data; struct Node *next; }Node ,*LinkList; 【C 代码】 LinkList GetListElemPtr(LinkList L ,int i) { /* L是含头结点的单链表的头指针,在该单链表中查找第i个元素结点: 若找到,则返回该元素结点的指针,否则返回NULL */ LinkList p; int k; /*用于元素结点计数*/ if (i<1 ∣∣ !L ∣∣ !L->next) return NULL; k = 1; P = L->next; / *令p指向第1个元素所在结点*/ while (p && (1) ) { /*查找第i个元素所在结点*/ (2) ; ++k; } return p; } Status DelListElem(LinkList L ,int i ,ElemType *e) { /*在含头结点的单链表L中,删除第i个元素,并由e带回其值*/ LinkList p,q; /*令p指向第i个元素的前驱结点*/ if (i==1) (3) ; else p = GetListElemPtr(L ,i-1); if (!p ∣∣ !p->next) return ERROR; /*不存在第i个元素*/ q = (4) ; /*令q指向待删除的结点*/ p->next = q->next; /*从链表中删除结点*/ (5) ; /*通过参数e带回被删除结点的数据*/ free(q); return SUCCESS; }


正确答案:(1) k<i
(2) p = p->next
(3) p=L
(4) p->next
(5) *e = q->data

更多相关问题