单选题为了建立如图所示的存储结构(即每个结点含两个域,data是数据域,next是指向结点的指针域)Alink *nextBlink nextCstruct link*nextDstruct link next

单选题
为了建立如图所示的存储结构(即每个结点含两个域,data是数据域,next是指向结点的指针域)
A

link *next

B

link next

C

struct link*next

D

struct link next


参考解析

解析:
结构体中的成员可以是各种类型的指针变量。当一个结构体中有一个或多个成员的基类型是本结构体类型时,称为“引用自身的结构体”。题目中next指针指向struct自身结点。答案选择C选项。

相关考题:

单链表的每个结点中包括一个指针link,它指向该结点的后继结点。现要将指针q指向的新结点插人到指针p指向的单链表结点之后,下面的操作序列中哪一个是正确的?A.q:=p^. link; p^.Link:=q^.link;B.p^.link:=q^.1ink; q:=p^.1ink;C.q^.link:=p^.link; p^.1ink:=q;D.p^.1ink:=q; q^.link:=p^.link;

单链表的每个结点中包括一个指针link,它指向该结点的后继结点。现要将指针q指向的新结点插入到指针P指向的单链表结点之后,下面的操作序列中正确的是( )A)q;=p↑.link;p↑.link:=q↑,link;B)p↑.link.q↑.link;q:=p↑.link;C)q↑.link::p↑.link;P↑.link:=q;D)P↑.link:=q;q↑.link:=p↑.link;

若有以下定义:struct link{ int data;struct link *next;} a,b,c,*p,*q;且变量a和b之间已有如下图所示的链表结构:指针p指向变量a,q指向变量c。则能够把c插入到a和b 之间并形成新的链表的语句组是:A.a.next=c; c.next=b;B.p.next=q; q.next=p.next;C.p-next=c; q-next=p-next;D.(*p).next=q; (*q).next=b;

已知bead指向一个带头结点的单向链表,链表中每个结点包含数据域(data)和指针域(next),数据域为整型。以下函数求出链表中所有连接点数据域的和值作为函数值返回。请在横线处填入正确内容。{ int data; struct link *next;}main(){ struct link *head;sam(______);{stmct link *p;int s=0;p=head->next;while(p){s+=p->data;p=p->next;}return(s);}

阅读以下函数说明和C语言函数,将应填入(n)处的字句写在对应栏内。[说明]该程序从正文文件test.txt中读入一批整数,并将它们按照递增的顺序存放在一个链表中。其中,函数struct Link*insertChain(struct Link*head,structLink*k)用来寻找结点k在链表head中的插入位置,并插入该结点。[C程序]include <stdio.h>include <stdlib.h>struct Link{ int number;struct Link *next;}struct Link *insertChain(struct Link *head,struct Link *k);VOid main(){ struct Link *ptr, *head;FILE *fd;int hum;if((fd=fopen("test.txt","r"))==NULL){print("Cannot open this file!\n");return;}head=NULL;while(fscanf(fd,"%d",hum)==1){ ptr=(1);if(!ptr) return;ptr->number=hum;ptr->next=NULL;head=insertChain(head,ptr);}(2);return;}struct Link *insertChain(struct Link *head,struct Link *k){ struct Link *ptr,*u;ptr=head;while(ptr && k && k->number>ptr->number){ u=ptr; (3) }if(ptr == head) head=k;else (4);(5);return head;}

单键表的每个结点中包括一个指针link,它指向该结点的后继结点。现要将指针q指向的新结点插入到指针p指向的单链表结点之后,下面的操作序列中哪一个是正确的?A.q:=p^.link;p^.link:=q^.link;B.p^.link:=q^.link;q:=p^.link;C.q^.link:=p^.link;p^.link:=q;D.p^.link:=q;q^.link:=p^.link;

以下程序的功能是建立—个带有头结点的单向链表,链表结点中的数据通过键盘输入,当输入数据为-1时,表示输入结束(链表头结点的data域不放数据,表空的条件是ph->next==NULL),请填空。include<stdio.h>struct list { int data;struct list *next;};struct list * creatlist(){ struct list *p,*q,*ph;int a;ph=(struct list *)malloc(sizeof(struct

若以下定义:struct link { int data; struck link *next;}a,b,c,*p,*q; 且变量a和b之间已有如下图所示的链表结构:指针p指向变量a, q指向变量c。则能够把c插入到a和b之间并形成新的链表的语句组是A.a.next=c;c.next=b;B.p.next=q;q.next=p.next;C.p->next=c;q->next=p->next;D.(*p).next=q;(*q).next=b;

若有以下定义: struct link { int data; struct link *next; }a,b,c,*p,*q;且变量a和b之间已有下图所示的链表结构:指针p指向变量a,指针q指向变量c,则能够把c插入到a和b之间并形成新的链表的语句组是( )。A.a.next=c;c.next=b;B.p.next=q;q.next=p.next;C.p->next=c;q->next=p->next;D.(*p).next=q; (*q).next=b;

设链式栈中结点的结构为(data,link),且top是指向栈顶的指针。若想在链式栈的栈顶插入一个由指针s所指的结点,则应执行的操作是(31)。A.top->link=s;B.s->link=top->link;top->link=s;C.s->link=top;top=s;D.s->link=top;top=top->link;

已知形成链表的存储结构如下图所示,则下述类型描述中的空白处应填______。 struct link { char data; ______; }node;A.struct link nextB.link * nextC.struct next linkD.struct link *next

用数组r存储静态链表,结点的next域指向后继,工作指针j指向链中结点,使j沿链移动的操作为()。A.j=r[j].nextB.j=j+1C.j=j->nextD.j=r[j]->next

已知形成链表的存储结构如下图所示,则下述类型描述中的空白处应填______。 struct 1ink { char data; }node;A.struct link nextB.link*nextC.sluct next linkD.struct link*next

单链表的每个结点中包括一个指针link,它指向该结点的后继结点。现将从单链表中删除指针p所指的下一结点。下面的操作序列中哪一个是正确的?A.q:=p^.1ink;p^.link:=q^.linkB.p^.link:=q^.link;q:=p^.linkC.q^.link:=p^.link;p^.link=qD.p^.link:=q;q^.link:=p^.link

为了建立如图所示的存储结构(即每个结点含两个域,data是数据域,next是指向结点的指针域)则在( )处填入的选项是( )。*struetlink{ehardata;( )node;A.struetlink*next;B.linknext;C.link$next;D.struetlinknext;

已知形成链表的存储结构如下图所示,则下述类型描述中的空白处应填______。 struct link { char data; ______, }node;A.struct link nextB.link *nextC.stuct next linkD.struct link *next

单链表的每个结点中包括一个指针link,它指向该结点的后继结点。现要将指针q指向的新结点插入到指针P指向的的单链表结点之后,下面的操作序列中哪一个是正确的?A.q:=p↑.link; p↑.link:=q↑.link;B.p↑.link:=q↑.link; q:=p↑.link;C.q↑.link:=p↑.link;p↑link:=q;D.p↑.link:=q; q↑.link:=p↑.link;

设单链表中结点的结构为(data,link)。已知指针q所指结点是指针p所指结点的直接前驱,若在*q与*p之间插入结点*s,则应执行下列哪一个操作?A.s↑.link:=p↑.link;p↑.link:=sB.q↑.link:=s;s↑.link:=pC.p↑.link:=s↑.link;s↑.link:=pD.p↑.link:=s;s↑.link:=q

单向链表的每一个结点都有一个指向它的后续结点的指针link,现有结点p和q,结点q在结点p的前面,要删除结点p,正确的操作应该是A.q↑. link:=p↑. link;B.p ↑. link:= q ↑. link;C.q↑. link:=p; p↑. link:=q;D.q:=p↑. link; p↑. link:= q ↑. link;

设单循环链表中结点的结构为(data,link),且rear是指向非空的带表头结点的单循环链表的尾结点的指针。若想删除链表第一个结点,则应执行下列哪一个操作()。A.s=rear;rear=rear->link;deletes;B.rear=rear->link;deleterear;C.rear=rear->link->link;deleterear;D.s=rear->link->link;rear->link->link=s->link;deletes;s为第一个结点硫

在单链表中,指针p指向结点A,若要删除A之后的结点(存在),则指针的操作方式为()。A.p—>next=p—>next—>nextB.p=p—>nextC.p=p—>next—>nextD.p->next-p

设指针变量p指向单链表结点A,则删除结点A的后继结点B需要的操作为()。A、p-next=p-next-nextB、p=p-nextC、p=p-next-nextD、p-next=p

设单链表中指针p指向结点a,若要删除p之后的结点(若存在),则需修改指针的操作为()。A、p->next=p->next->nextB、p=p->nextC、p=p->next->nextD、next=p

设线性链表的存储结构如下: struct node {ELEMTP data; /*数据域*/ struct node *next; /*指针域*/ } 试完成下列建立单链表的算法。 creat() {char var; head=(struct node *)malloc(sizeof(struct node)); head-next= () ; while((var=getchar())!=‘/n’){ ptr=( struct node *)malloc(sizeof(struct node)); ptr-data= var ;ptr-next=head-next; head-next= ptr ; } }

设线性链表的存储结构如下: struct node {ELEMTP data; /*数据域*/ struct node *next; /*指针域*/ } 试完成下列在链表中值为x的结点前插入一个值为y的新结点。如果x值不存在,则把新结点插在表尾的算法。 void inserty(struct node *head,ELEMTP x,ELEMTP y) {s=(struct node *)malloc(sizeof(struct node)); (); if(){s-nexr=head;head=s;} else { q=head;p=q-next; while(p-dqta!=xp-next!=NULL){q=p;()} if(p-data= = x){q-next=s;s-next=p;} else{p-next=s;s-next=NULL;} } }

设有一个不带头结点的单向链表,头指针为head,结点类型为NODE,每个结点包含一个数据域data和一个指针域next,该链表有两个结点,p指向第二个结点(尾结点),按以下要求写出相应语句。新开辟一个结点,使指针s指向该结点,结点的数据成员data赋值为1。

单选题为了建立如图所示的存储结构(即每个结点含两个域,data是数据域,next是指向结点的指针域)Alink *nextBlink nextCstruct link*nextDstruct link next

单选题有以下程序:#include struct link{ int data; struct link *next;};main(){ struct link *h,a,b; h=a; a.data=10; a.next = b; b.data = 20;}程序运行时不能输出10,20的语句是(  )。Aprintf(%d,%d,h-data,a.next.data);Bprintf(%d,%d,a.data,(*a.next).data);Cprintf(%d,%d,h-data,(*a.next).data);Dprintf(%d,%d,a.data,a.next-data);