填空题 1.  下列给定程序中,函数fun的功能是:统计带头结点的单向链表中结点的个数,并存放在形参n所指的存储单元中。
    请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。
    注意:部分源程序给出如下。
    不得增行或删行,也不得更改程序的结构!
    试题程序:
    #include<stdio.h>
    #include<stdlib.h>
    #define N 8
    typedef struct list
    {  int data;
    struct list *next;
    } SLIST;
    SLIST * creatlist (int *a);
    void outlist (SLIST *);
    void fun (SLIST *h, int *n)
    {  SLIST * p;
    /*********found*********/
    ______=0;
    p=h->next;
    while(p)
    {  (*n)++;
    /*********found*********/
    p=p->______;
    }
    }
    main()
    {  SLIST *head;
    int a[N]={12,87,45,32,91,16,20,48},num;
    head=creatlist(a);
    outlist(head);
    /*********found*********/
    fun(______, &num);
    printf ("\nnumber=%d\n",num);
    }
    SLIST * creatlist(int a[])
    {  SLIST *h,*p,*q;  int i;
    h=p=(SLIST *)malloc (sizeof(SLIST));
    for(i=0; i<N; i++)
    {  q=(SLIST *)malloc(sizeof(SLIST));
    q->data=a[i]; p->next=q;
    p=q;
    }
    p->next=0;
    return h;
    }
    void outlist (SLIST *h)
    {  SLIST * p;
    p=h->next;
    if (p==NULL)
    printf ("The list isNULL!\n");
    else
    {  printf("\nHead");
    do
    { printf("->%d",p->data);
    p=p->next; }
    while(p!=NULL);
    printf("->End\n");
    }
  • 1、
【正确答案】 1、(1)*n    (2)next    (3)head    
【答案解析】[考点]
   本题考查:变量赋初值操作;链表结点的数据域和指针域表示方法;函数调用。
   
   填空1:* n用来存放结点的个数,对其赋初值为0。
   填空2:while循环用于遍历链表,循环一次,指针指向链表的下一个结点。
   填空3:根据函数定义语句确定调用函数的实际参数,即fun(head,&num);。