..........
struct lb * p;
........
p=sy4( head);//程序有没有类似于这个 把sy4返回给了p ?
print(p);
....
如果这样:
..........
struct lb * head;
........
sy4( head);
print(head);
....
就不会删除第一个
struct lb * sy4(struct lb * head)
{
printf("请输入一个数,删除链表中与之相同的数:\n");
int m,i;
scanf("%d",&m);
struct lb * p1,* p2=NULL;p1=head;
if (head == NULL)
{
printf("这是一个空链表");
}
do
{
p1=head;
while( p1->a !=m && p1->next !=NULL )
{
p2=p1;
p1=p1->next;
}
if( p1->a == m )
{
if ( p1 == head )
{
head = head->next;
n--;
}
else
{
p2->next=p1->next;
n--;
}
}
if( head == NULL )
{
break;
}
}while ( p1->next != NULL );
printf("删除后的的链表为:\n");
return head;
}