• 数据结构-链表


    判断题

    1.在单向链表中,头指针中存放的是头结点的内容。

         T      F

    2.单向链表中的每个结点都需要动态分配内存空间。

         T      F

    3.通常使用结构的嵌套来定义单向链表结点的数据类型。

         T      F

    4.用链表代替数组进行数据操作时,查询更加方便。

         T      F

    选择题

    1.以下程序的输出结果是( )。

    struct HAR
    {int x, y; struct  HAR  *p;} h[2];
    int main(void)
    { h[0].x=1; h[0].y=2;
      h[1].x=3; h[1].y=4;
      h[0].p=h[1].p=h;
      printf(“%d%d
    ”,(h[0].p)->x,(h[1].p)->y);		
      return 0;		}
    
        A.12
        B.23
        C.14
        D.32

    2.以下程序的输出结果是( )。

    struct NODE{ int num;  struct NODE  *next; };
    int main(void)
    { struct NODE *p,*q,*r;
      p=(struct NODE*)malloc(sizeof(struct NODE));
      q=(struct NODE*)malloc(sizeof(struct NODE));
      r=(struct NODE*)malloc(sizeof(struct NODE));
      p->num=10; q->num=20; r->num=30;
      p->next=q;q->next=r;
      printf(“%d
    ”,p->num+q->next->num);	
      return 0;		}
    
        A.10
        B.20
        C.30
        D.40

    3.设有如下定义的链表,则值为7的表达式是()。

    struct st{
          int n;
          struct st  *next;
    } a[3] = {5, &a[1], 7, &a[2], 9, NULL}, *p = &a;
    
        A.p->n
        B.(p->n)++
        C.(++p)->n
        D.p->next->n

    4.在一个单链表head中,若要在指针p所指结点后插入一个q指针所指结点,则执行()。

        A.p->next=q->next; q->next=p;
        B.q->next=p->next; p=q;
        C.p->next=q->next; p->next=q;
        D.1. q->next=p->next; p->next=q;

    5.下面程序段输入一行字符,按输入的逆序建立一个链表。

    struct node{
      char info;
      struct node *link;
    } *top, *p;
    char c;
    top=NULL;
    while((c=getchat())!='
    ')
    {  p=( struct node*)malloc(sizeof(struct node));
       p->info=c;
         (1分)   ;
       top=p;
    }
    
        A.top->link=p
        B.p->link=top
        C.top=p->link
        D.p=top->link

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

    1.jpg

        A.q->next=NULL; p=p->next; p->next=q;
        B.p=p->next; q->next=p->next; p->next=q;
        C.p=p->next; q->next=p; p->next=q;
        D.p=(*p).next; (*q).next=(*p).next; (*p).next=q;

    填空题

    1.下列函数用于将链表中各结点的数据依次输出。

    struct student {
        long data;
        struct student *next;
    };
    void print(struct student *head)
    {
        struct student *p ;
        p=head;
        if(head != NULL)
            do {
                printf("%ld ”, p->data);
                        ;
            } while ( );
    }

    2.已建立学生“英语”课程的成绩链表(成绩存于score域中,学号存于num域中), 下列函数用于输出不及格学生的学号和成绩,及补考学生人数。

    void require(struct student *head)
    {
        struct student *p;
        long x;
        if( head != NULL) {
            x=0;
                    ;
            while(p != NULL) {
                if( ) {
                    printf(”%7d %6.1f ”, p->num, p->score);
                    x++;
                }
                p = p->next;
            }
            printf(”%ld ”, x);
        }
    }
  • 相关阅读:
    hyperV 虚拟机的创建和内存管理
    诡异~~ASP.NET 程序 无法上传文件 (这个..自己大意造成的嘛~~)
    多线程扫描,多线程采集, ftpscan.NET
    ASP.NET 调试
    Hyperv 如何使用WMI向虚拟计算机附加硬盘
    VS2008SP1显示中文版的智能感知提示信息
    NGIX
    python3的linux环境编译安装
    NGIX之项目布署
    android之自定义ViewGroup和自动换行的布局的实现(支持按钮间隔)
  • 原文地址:https://www.cnblogs.com/nonlinearthink/p/11039494.html
Copyright © 2020-2023  润新知