PTA 6-1 单链表逆置* (20 分)
已知单链表的结点结构定义如下:
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;
}