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

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

link *next

B

link next

C

struct link*next

D

struct link next


相似考题
更多“单选题为了建立如图所示的存储结构(即每个结点含两个域,data是数据域,next是指向结点的指针域)A link *nextB link nextC struct link*nextD struct link next”相关问题
  • 第1题:

    阅读以下函数说明和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;

    }


    正确答案:(1)(struct Link*)malloc(sizeof (struct Link)) (2) fclose(fd) (3) ptr=ptr->next或ptr=u->next (4) u->next=k (5) k->next=ptr
    (1)(struct Link*)malloc(sizeof (struct Link)) (2) fclose(fd) (3) ptr=ptr->next或ptr=u->next (4) u->next=k (5) k->next=ptr 解析:本题采用文件的输入方式,其主要思路:①打开文件;②从文件读入一个整数,动态申请一个结点;③将结点插入到以head为头指针的链表中;④反复执行②和③直到文件结束;⑤关闭文件。
    通过上述分析,不难得到(1)为申请结点,应该填“(struct Link*)malloc(sizeof(structLink))”;(2)为关闭文件,即fclose(fd)。在插入结点时,让u指向插入结点ptr之前,因此(3)为u的下一个结点,填“ptr=ptr->next”或“ptr=u->next”。插入结点时分为在头结点插入和u之后插入两种情况。(4)为在u之后插入的情况,应该填“u->next=k”,(5)填“k->next=ptr”。

  • 第2题:

    以下程序的功能是建立—个带有头结点的单向链表,链表结点中的数据通过键盘输入,当输入数据为-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


    正确答案:
    解析: 本题考查的是链表这一数据结构对结构体变量中数据的引用。链表的特点是结构体变量中有两个域,一个是数据,另一个是指向该结构体变量类型的指针,用以指明链表的下一个结点。

  • 第3题:

    若有以下定义: 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;


    正确答案:D
    解析:本题考查链表的数据结构,必须利用指针变量才能实现。b和c是变量,选项A)错误;p是指针变量,选项B)表达错误;选项C)的赋值/顷序错误。

  • 第4题:

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

    A.struct link next

    B.link * next

    C.struct next link

    D.struct link *next


    正确答案:D
    解析:在单向链表中,由于每个结点需要存储下一个结点的地址,且下一个结点的数据类型与前一个结点的数据类型完全相同,故应为structlink*next。

  • 第5题:

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

    A.struct link next

    B.link*next

    C.sluct next link

    D.struct link*next


    正确答案:D
    解析:在单向链表中,由于每个结点需要存储下—个结点的地址,且下—个结点的数据类型与前—个结点的数据类型完全相同,故应为strect link*next。

  • 第6题:

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

    ( )处填入的选项是( )。*struetlink{ehardata;( )node;

    A.struetlink*next;

    B.linknext;

    C.link$next;

    D.struetlinknext;


    正确答案:A
    存储结构用链式存储。链式结构每个节点有个指针域,指针域指向下一个链式结构的节点,因此指针域的结构应该是该结构形式,因此应定义为structlink}next,故答案为A选项。struct是结构体的说明符,不能省。

  • 第7题:

    单链表的每个结点中包括一个指针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;


    正确答案:C
    解析:将指针p所指向的地址赋于q,将q的值赋于p指向的地址。

  • 第8题:

    单向链表的每一个结点都有一个指向它的后续结点的指针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;


    正确答案:A
    解析:单向链表删除运算只要将q的指针link指向p的后继即可q↑.link:=p↑.link。

  • 第9题:

    在单链表中,指针p指向结点A,若要删除A之后的结点(存在),则指针的操作方式为()。

    A.p—>next=p—>next—>next
    B.p=p—>next
    C.p=p—>next—>next
    D.p->next-p

    答案:A
    解析:
    要在单链表中删除p指向的结点的后继结点,需要将后继结点的后继交给p所指结点的指铲域。具体实现语句为p—>next=p—>next—>next。

  • 第10题:

    设单链表中指针p指向结点a,若要删除p之后的结点(若存在),则需修改指针的操作为()。

    • A、p->next=p->next->next
    • B、p=p->next
    • C、p=p->next->next
    • D、next=p

    正确答案:A

  • 第11题:

    设线性链表的存储结构如下: 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!=x&&p->next!=NULL){q=p;()} if(p->data= = x){q->next=s;s->next=p;} else{p->next=s;s->next=NULL;} } }


    正确答案:s->data=y;head->data= =x;p=p->next

  • 第12题:

    单选题
    有以下程序:#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的语句是(  )。
    A

    printf(%d,%d,h->data,a.next.data);

    B

    printf(%d,%d,a.data,(*a.next).data);

    C

    printf(%d,%d,h->data,(*a.next).data);

    D

    printf(%d,%d,a.data,a.next->data);


    正确答案: A
    解析:
    可用以下3种形式来引用结构体变量中的成员:①结构体变量名.成员名;②指针变量名->成员名;③(*指针变量名).成员名。主函数定义了两个结构体变量a,b,其成员data分别为10和20,且a成员指针指向b。A选项中a.next为指针,其引用格式为a.next->data与(*a.next).data,A项错误。B项a.data=10,(*a.next).data=20,能正确输出10,20;C项h->data=10,(*a.next).data=20,能正确输出10,20;D项a.data=10,a.next->data=20,能正确输出10,20。答案选择A选项。

  • 第13题:

    单键表的每个结点中包括一个指针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;


    正确答案:C
    解析:本题考核有关计算机键表的基本知识,参考2.2.2“键表”一节。

  • 第14题:

    若以下定义: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;


    正确答案:D
    解析:本题考核的知识点是在链表中插入结点的操作。在本题中指针p.指向变量a,q指向变量c。要把c插入到变量n和变量b之间,就应该首先让变量a的指针域指向变量c,即(*p).next=q,然后让变量c的指针域指向变量b,即(*q).next=&b.所以,4个选项中D为所选。

  • 第15题:

    设链式栈中结点的结构为(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;


    正确答案:C
    解析:s作为新的栈顶,top指向s。

  • 第16题:

    用数组r存储静态链表,结点的next域指向后继,工作指针j指向链中结点,使j沿链移动的操作为()。

    A.j=r[j].next

    B.j=j+1

    C.j=j->next

    D.j=r[j]->next


    正确答案:A

  • 第17题:

    单链表的每个结点中包括一个指针link,它指向该结点的后继结点。现将从单链表中删除指针p所指的下一结点。下面的操作序列中哪一个是正确的?

    A.q:=p^.1ink;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


    正确答案:A
    解析: 单链表是链式存储的线性表,它的每个结点中包括一个指针link,它指向该结点的后继结点的位置。从单链表中删除指针P所指的下一结点的运算表达式为 q:^=p^.link;p^.link:=q^.link。

  • 第18题:

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

    A.struct link next

    B.link *next

    C.stuct next link

    D.struct link *next


    正确答案:D
    解析:在单向链表中,由于每个结点需要存储下一个结点的地址,且下—个结点的数据类型与前—个结点的数据类型完全相同,故应为structlink*next。

  • 第19题:

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

    A.s↑.link:=p↑.link;p↑.link:=s

    B.q↑.link:=s;s↑.link:=p

    C.p↑.link:=s↑.link;s↑.link:=p

    D.p↑.link:=s;s↑.link:=q


    正确答案:B
    解析:在单链表中两个节点之间插入一个新结点,要把前面结点的指针域指向新插入的结点(q↑.link=s),把新插入的结点的指针域指向后面的结点(e↑.link=p)。

  • 第20题:

    设单循环链表中结点的结构为(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为第一个结点硫

    答案:D
    解析:
    若要删除结点需要改变尾指针的指向。

  • 第21题:

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

    • A、p->next=p->next->next
    • B、p=p->next
    • C、p=p->next->next
    • D、p->next=p

    正确答案:A

  • 第22题:

    设线性链表的存储结构如下: 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 ; } }


    正确答案:NULL

  • 第23题:

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


    正确答案:s=(NODE*)malloc(sizeof(NODE));s->data=1;