下列给定程序中,函数fun的功能是:统计带头结点的单向链表中结点的个数,并存放在形参n所指的存储单元中。 请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。 注意:部分源程序给出如下。 不得增行或删行,也不得更改程序的结构! 试题程序:

admin2017-02-24  40

问题 下列给定程序中,函数fun的功能是:统计带头结点的单向链表中结点的个数,并存放在形参n所指的存储单元中。
请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。
注意:部分源程序给出如下。
不得增行或删行,也不得更改程序的结构!
试题程序:
#include<stdio.h>
#include<stdlib.h>
#defitie N 8
typedef struct list
{  int data;
   struer list*next;
}SLIST;
SLIST*creatlist(int  *a);
void outlist(SLIST*);
void fun(SLTST*h,int*n)
{  SLIST*P;
/*********found*********/
  【1】=0;
  P=h->next;
  while(P)
  {  (*n.)++;
/*********found*********/
    p=P->【2】
  }
}
main()
{  SLIST*head;
    int a[N]={12,87,45,32,91,
16,20,48),num;
    head=creatlist(a);
    outlist(head);
/*********found*********/
  fun(【3】,&hum);
  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(SLTST));
       q->data=a;P->next=q;
       p=q;
    }
    P->next=0;
    return h;
}
void outlist(SLTST*h)
{  SLIST*P;
    P=h->next;
    if(P==NULL)
    printf("The list is NULL!\n");
    else
    { printf("\nHead");
      do
      { printf("->%d",p->data);
        p=P->next;)
        while(P!=NULL);
        printf("->End\n");
    }
}

选项

答案(1)*n (2)next (3)head

解析 填空1:*n用来存放结点的个数,对其赋初值为0。
填空2:while循环用于遍历链表,循环一次,指针指向链表的下一个结点。
填空3:根据函数定义语句确定调用函数的实际参数,即fun(head,&num);。
转载请注明原文地址:https://jikaoti.com/ti/R2i0FFFM
0

最新回复(0)