6-4 单链表逆置*
作者 李祥
单位 湖北经济学院
已知单链表的结点结构定义如下:
typedef struct _NODE_
{
int data;
struct _NODE_ *next;
} NODE;
说明:data 为数据域。next 为指针域,指示后继结点。
请编写函数,将带附加头结点的单链表逆置。
函数原型
void Reverse(NODE *head);
说明:参数 head 为单链表的头指针。函数将单链表中数据元素的排列顺序颠倒过来。
裁判程序
int main()
{
NODE *h;
Create(&h);
Input(h);
Reverse(h);
Output(h);
putchar('\n');
Destroy(&h);
return 0;
}
说明:Create 函数用于创建链表,Destroy 函数用于销毁链表。Input 函数用于输入链表:首先输入结点数,然后输入这些数据元素。Output 函数用于输出单链表,数据元素之间以空格间隔。
输入样例
5
28 47 79 52 36
输出样例
36 52 79 47 28
接口函数实现:
void Reverse(NODE *head){
NODE *p,*q,*r;
p=head->next;
q=NULL;
head->next=NULL;
while(p){
r=p->next;
p->next=q;
q=p;
p=r;
}
head->next=q;
}