给定程序MODI1.C中,函数void list(MY

给定程序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);
}
答案
第1空:MYDATA *p;
第2空:if(p->deleted==0)
第3空:p=p->next;

题目信息

题号:6719
题型:填空题
难度:普通