填空题 1.  请补充函数proc(),该函数的功能是:建立一个带头结点的单向链表并输出到文件“out.dat”和屏幕上,各结点的值为对应的下标,链表的结点数及输出的文件名作为参数传入。
    注意:部分源程序如下。
    请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的横线上填入所编写的若干表达式或语句。
    试题程序:
    #include<stdio.h>
    #include<conio.h>
    #include<stdlib.h>
    typedef struct ss
    {
    int data;
    struct ss*next;
    }NODE;
    void proc(int n,char*filename)
    {
    NODE*h,*p,*s;
    FILE*pf;
    int i;
    h=p=(NODE*)malloc(sizeof(NODE));
    h->data=0;
    for(i=1;i<n;i++)
    {
    s=(NODE*)malloc(sizeof(NODE));
    s->data=______;
    ______;
    p=______;
    }
    p->next=NULL:
    if((pf=fopen(filename,"w"))==NULL)
    {
    printf("Can not open out98.dat!");
    exit(0);
    }
    p=h;
    fprintf(pf,"\n***THE LIST***\n");
    printf("\n***THE LIST***\n");
    while(p)
    {
    fprintf(pf,"%3d",p->data);
    printf("%3d",p->data);
    if(p->next!=NULL)
    {
    fprintf(pf,"->");
    printf("->");
    }
    p=p->next;
    }
    fprintf(pf,"\n");
    printf("\n");
    fclose(pf);
    p=h;
    while(p)
    {
    s=p;
    p=p->next;
    free(s);
    }
    }
    void main()
    {
    char*filename="out.dat";
    int n;
    system("CLS");
    printf("\nInput n:");
    scanf("%d",&n);
    proc(n,filename);}
  • 1、
【正确答案】 1、i
   p->next=s
   p->next    
【答案解析】 s->data指向节点s的值,其下标为i,题目要求各结点的值为对应的下标,因此,第1空处填“i”。函数的功能是建立一个带头结点的单向链表,因此,每生成一个结点,上一个结点的next指针指向该结点。由程序可知,指针p一直都指向上一个结点,因此,第2空处填“p->next=s”。每生成一个结点,p指向下一个结点,因此,第3空处填“p->next”。