参考答案和解析
错误
更多“在具有头结点的单链表中,头指针指向链表的第一个数据结点。”相关问题
  • 第1题:

    单向循环链表是单向链表的一种扩充,当单向链表带有头结点时,把单向链表中尾结点的指针域由空指针改为回答;当单向链表不带头结点时,则把单向链表中尾结点的指针域由空指针改为指向()。


    参考答案:头结点的指针、指向第一个结点的指针

  • 第2题:

    在一个长度为n(n>1)的带头结点的单链表head上,另设有尾指针r(指向尾结点),执行()操作与链表的长度有关。

    A.删除单链表中的第一个元素

    B.删除单链表中的尾结点

    C.在单链表的第一个元素前插入一个新结点

    D.在单链表的最后一个元素后插入一个新结点


    参考答案:B

  • 第3题:

    程序中已构成如下图所示的不带头结点的单向链表结构,指针变量s、P、q、均已正确定义,并用于指向链表结点,指针变量s总是作为头指针指向链表的第一个结点。

    该程序段实现的功能是( )。

    A.首结点成为尾结点

    B.尾结点成为首结点

    C.删除首结点

    D.删除尾结点


    正确答案:A
    循环找到末尾结点,然后赋值给第一个结点,所以选择A)。

  • 第4题:

    阅读以下说明和C函数,填补代码中的空缺,将解答填入答题纸的对应栏内。
    [说明]
    函数Combine(LinkList La,LinkList Lb)的功能是:将元素呈递减排列的两个含头结点单链表合并为元素值呈递增(或非递减)方式排列的单链表,并返回合并所得单链表的头指针。例如,元素递减排列的单链表La和Lb如图1所示,合并所得的单链表如图2所示。

    设链表结点类型定义如下:

    typedef Struct Node{ int data; struct Node*next; }Node,*LinkList; [C函数] LinkListCombine(LinkList La,LinkList Lb) { //La和Lb为含头结点且元素呈递减排列的单链表的头指针 //函数返回值是将La和Lb合并所得单链表的头指针 //且合并所得链表的元素值呈递增(或非递减)方式排列 ______Lc,tp,pa,pb; //Lc为结果链表的头指针,其他为临时指针 if(!La)returnNULL; pa=La->next; //pa指向La链表的第一个元素结点 if(!Lb) returnNULL; pb=Lb->next; //pb指向Lb链表的第一个元素结点 Lc=La; //取La链表的头结点为合并所得链表的头结点 Lc->next=NULL; while(______) { //pa和pb所指结点均存在(即两个链表都没有到达表尾) //令tp指向pa和pb所指结点中的较大者 if(pa->data>pb->data){ tp=pa; pa=pa->next; } else{ tp=pb; pb=pb->next; } ______ =Lc->next; //tp所指结点插入Lc链表的头结点之后 Lc->next=______; } tp=(pa)?pa:pb; //设置tp为剩余结点所形成链表的头指针 //将剩余的结点合并入结果链表中,pa作为临时指针使用 while (tp) { pa=tp->next; tp->next=Lc->next; Lc->next=tp; ______; } return Lc; }


    答案:
    解析:
    LinkList
    pa&&pb
    tp->next
    tp
    tp=pa

    【解析】

    本题考查数据结构应用及C语言实现。链表运算是C程序设计题中常见的考点,需熟练掌握。考生需认真阅读题目中的说明,以便理解问题并确定代码的运算逻辑,在阅读代码时,还需注意各变量的作用。

  • 第5题:

    以下函数在head为头指针的具有头结点的单向链表中删除第1个结点,补充程序。
    (1)j(2)q=q->next
    (3)q->next
    (4)q->next
    (5)p

  • 第6题:

    在带有头结点的双链表L中,指针p所指结点是第一个元素结点的条件是()。


    正确答案:p=L->next

  • 第7题:

    在具有头结点的单链表中,头指针指向链表的第一个数据结点。


    正确答案:错误

  • 第8题:

    设有一个头指针为head的单向循环链表,p指向链表中的结点,若p->next=(),则p所指结点为尾结点。


    正确答案:head

  • 第9题:

    设有一个单向链表,结点的指针域为next,头指针为head,p指向尾结点,为了使该单向链表改为单向循环链表,可用语句()。


    正确答案:p->next=head;

  • 第10题:

    设有一个不带头结点的单向链表,头指针为head,结点类型为NODE,每个结点包含一个数据域data和一个指针域next,该链表有两个结点,p指向第二个结点(尾结点),按以下要求写出相应语句。把该结点插入链表的尾部,释放指针s的指向。


    正确答案: P->next=s;
    S->next=NULL;
    free(s)

  • 第11题:

    填空题
    设有一个单向循环链表,头指针为head,链表中结点的指针域为next,p指向尾结点的直接前驱结点,若要删除尾结点,得到一个新的单向循环链表,可执行操作()。

    正确答案: p->next=head
    解析: 暂无解析

  • 第12题:

    问答题
    在单链表、双链表和单循环表中,若仅知道指针p指向某结点,不知道头指针,能否将结点*p从相应的链表中删去?若可以,其时间复杂度各为多少?

    正确答案: 1.单链表。当我们知道指针p指向某结点时,能够根据该指针找到其直接后继,但是由于不知道其头指针,所以无法访问到p指针指向的结点的直接前趋。因此无法删去该结点。
    2.双链表。由于这样的链表提供双向链接,因此根据已知结点可以查找到其直接前趋和直接后继,从而可以删除该结点。其时间复杂度为O(1)。
    3.单循环链表。根据已知结点位置,我们可以直接得到其后相邻的结点位置(直接后继),又因为是循环链表,所以我们可以通过查找,得到p结点的直接前趋。因此可以删去p所指结点。其时间复杂度应为O(n)。
    解析: 暂无解析

  • 第13题:

    对于单链表表示法,以下说法正确的是()

    A指向链表的第一个结点的指针,称为头指针

    B单链表的每一个结点都被一个指针所指

    C任何结点只能通过指向它的指针才能引用

    D尾指针变量具标识单链表的作用,故常用尾指针变量来命名单链表


    参考答案:ABC

  • 第14题:

    关于循环链表与线性链表,不正确的是( )。

    A.每个结点的组成是数据域和指针域

    B.循环链表中最后一个结点的指针指向链表的第一个结点

    C.循环链表中访问指定结点的直接前驱可直接访问

    D.循环链表中的循环条件是判断当前指针是否指向头指针


    正确答案:C
    解析:循环链表从任意一结点出发可以找到表中的其他结点,但其查找方向固定,要找到其直接前趋,需要从其后继结点开始,访问完表中的所有结点指针才能完成。

  • 第15题:

    阅读以下说明和C函数,填补代码中的空缺,将解答填入答题纸的对应栏内。
    [说明]
    函数ReverseList(LinkList headptr)的功能是将含有头结点的单链表就地逆置。处理思路是将链表中的指针逆转,即将原链表看成由两部分组成:已经完成逆置的部分和未完成逆置的部分,令s指向未逆置部分的第一个结点,并将该结点插入已完成部分的表头(头结点之后),直到全部结点的指针域都修改完成为止。
    例如,某单链表如图1所示,逆置过程中指针s的变化情况如图2所示。

    链表结点类型定义如下:

    typedef struct Node{ int data; Struct Node *next; }Node,*LinkList; [C函数] void ReverseList(LinkList headptr) { //含头结点的单链表就地逆置,headptr为头指针 LinkList p,s; if(______) return; //空链表(仅有头结点)时无需处理 P=______; //令P指向第一个元素结点 if(!P->next) return; //链表中仅有一个元素结点时无需处理 s=p->next; //s指向第二个元素结点 ______ =NULL; //设置第一个元素结点的指针域为空 while(s){ p=s; //令p指向未处理链表的第一个结点 s= ______; p->next=headptr->next; //将p所指结点插入已完成部分的表头 headptr->next= ______; } }


    答案:
    解析:
    !headptr->next,或!headptr||!headptr->next,或其等价形式
    headptr->next
    headptr->next->next,或p->next,或其等价形式
    s->next,或p->next, 或其等价形式
    p

  • 第16题:

    在长度为n(Il>1)的()上,删除第一个元素.其时间复杂度为O(n)。

    A.只有首结点指针的不带头结点的循环单链表
    B.只有尾结点指针的不带头结点的循环单链表
    C.只有尾结点指针的带头结点的循环单链表
    D.只有头结点的循环单链表

    答案:A
    解析:
    只有首结点指针的不带头结点的循环单链表删除第一个元素,需要遍历整个链表,因此A项的时间复杂度为O(n),BCD三项的时间复杂度都为O(1)。

  • 第17题:

    单链表形式的队列,头指针F指向队列的第一个结点,尾指针R指向队列的最后一个节点。


    正确答案:正确

  • 第18题:

    在循环单链表中,最后一个结点的指针指向()结点。


    正确答案:表头

  • 第19题:

    在单链表中,头指针的作用是()

    • A、方便运算的实现
    • B、用于标识单链表
    • C、使单链表中至少有一个结点
    • D、用于标识首结点位置

    正确答案:B

  • 第20题:

    设有一个单向循环链表,头指针为head,链表中结点的指针域为next,p指向尾结点的直接前驱结点,若要删除尾结点,得到一个新的单向循环链表,可执行操作()。


    正确答案:p->next=head;

  • 第21题:

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


    正确答案:head=head->next;

  • 第22题:

    在单链表、双链表和单循环表中,若仅知道指针p指向某结点,不知道头指针,能否将结点*p从相应的链表中删去?若可以,其时间复杂度各为多少?


    正确答案:1.单链表。当我们知道指针p指向某结点时,能够根据该指针找到其直接后继,但是由于不知道其头指针,所以无法访问到p指针指向的结点的直接前趋。因此无法删去该结点。
    2.双链表。由于这样的链表提供双向链接,因此根据已知结点可以查找到其直接前趋和直接后继,从而可以删除该结点。其时间复杂度为O(1)。
    3.单循环链表。根据已知结点位置,我们可以直接得到其后相邻的结点位置(直接后继),又因为是循环链表,所以我们可以通过查找,得到p结点的直接前趋。因此可以删去p所指结点。其时间复杂度应为O(n)。

  • 第23题:

    问答题
    设有一个不带头结点的单向链表,头指针为head,结点类型为NODE,每个结点包含一个数据域data和一个指针域next,该链表有两个结点,p指向第二个结点(尾结点),按以下要求写出相应语句。删除链表的第一个结点。

    正确答案: head=head->next;
    解析: 暂无解析

  • 第24题:

    判断题
    在具有头结点的单链表中,头指针指向链表的第一个数据结点。
    A

    B


    正确答案:
    解析: 暂无解析