高手帮忙看看 谢谢
#include <stdio.h>#include <stdlib.h>
#define N 8
typedef struct list
{
int data;
struct list *next;
}ko;
void fun(ko *h)
{
ko *p, *q;
p=h->next;
if(p!=NULL)
{
q=p->next;
while(q!=NULL)
{
if(p->data==q->data)
{
p->next=q->next;
free(q);
q=p->next;
}
else
{
p=q;
q=q->next;
}
}
}
}
ko *inlist(int *a)
{
ko *h, *p, *q;
int i;
h=p=(ko *)malloc(sizeof(ko));
for(i=0;i<N;i++)
{
q=(ko *)malloc(sizeof(ko));
q->data=a[i];
p->next=q;
p=q;
}
p->next=NULL;
return h;
}
void outlist(ko *h)
{
ko *p;
p=h->next;
if(p==NULL)
printf("the list is NULL");
else
{
printf("\nHead");
do
{
printf("->%d", p->data);
p=p->next;
}while(p!=NULL);
printf("->End\n");
}
}
void main()
{
ko *head;
int a[N]={1, 2, 2, 3, 4, 4, 5};
head=inlist(a);
printf("the list original data:\n");
outlist(head);
fun(head);
printf("the affter data:\n");
outlist(head);
getch();
}
为什么运行后 结果后面多了一个0 出来 找不出原因