求此函数的main函数怎么写啊??

来源:百度知道 编辑:UC知道 时间:2024/05/31 09:54:54
求此函数的main函数怎么写!要详细的 追加分数!!!

设链表上每个结点的数据结构为
typedef struct node
{ int d;
struct node *next;
}NODE;

NODE *invert(NODE *head)
{ NODE *p,*q,*r;
if(head==0||head->next==0)
return head;
p=head;
q=p->next;
while(q!=0)
{ r=q->next;
q->next=p; p=q;q=r;
}
head->next=0;
head=p;
return head;
}

为什么我运行的时候出现

函数NODE *invert(NODE *head)的功能是:将head指向的单链表逆置,即将原链表最后一个结点变为第一个结点,原来倒数第二个结点变成第二个结点,以此类推。在逆置过程中不建立新的链表。
算法提示:从前往后,逐个改变结点指针域的指向,比如将第二个结点指向第一个结点,将第三个结点指向第二个结点,以此类推直至尾结点。最后把原来第一个结点(逆置之后是最后一个)的next域置空,把原来最后一个结点(逆置之后是第一个)的地址赋予head。

这个invert函数调用时容易犯错。
1)建立链表。使用create()或是insert()之类的函数,最后一定要得到链表的头指针。
2)调用invert: head = invert(head);
3)遍历显示链表。

1)建立链表(得到head)
2)调用NODE *invert(NODE *head)
3)遍历链表将结果显示出来