填空题

给定程序MODI1.C中,函数void list(MYDATA *h)的功能是:列出带头结点单链表中所有没有删除标记的数据。调用这个函数时,传给形参h的是指向单链表头结点的指针。


例如,当10个结点的数据为1,2,3,4,5,6,7,8,9,10时,输出将是:3 4 6 7 8 9 10

其中,各个数据所对应的删除标记是由随机数产生的。

请改正函数list中指定部位的错误,使它能得出正确的结果。

注意:不要改动main函数和creat函数,不得增行或删行

#include<stdio.h>

#include<stdlib.h>

typedef struct dat

{

    char deleted;  //是否删除:0-未删除,1-删除

    int data;

    struct dat* next;

} MYDATA;

void list(MYDATA *h)

{

/******found******/

    MYDATA  p;

    p=h->next;

    while(p!=NULL)

    {

    /******found******/

        if(p->data==0)

        {

            printf("%d  ",p->data);

        }

/******found******/

        p=next;

    }

}

 

void creat(MYDATA *h,int *d,int n)

{

    MYDATA *p, *q;

    int i=0,del;

    q=h;

    while(n>0)

    {

        p=( MYDATA *)malloc(sizeof(MYDATA));

        del=rand()%2;

        p->data=d[i];

        p->deleted=del;

        p->next=q->next;

        q->next=p;

        q=p;

        n--;i++;

    }

}

void main()

{

    MYDATA *head;

    int n=10,dd[]={1,2,3,4,5,6,7,8,9,10};

    head=(MYDATA *)malloc(sizeof(MYDATA));

    head->next=NULL;

    creat(head,dd,n);

    list(head);

}

赣ICP备20007335号-2