已知单链表的结点结构定义如下:
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
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
题解:
void Reverse(NODE *head){
int data[1000000];
NODE *p,*q;
p = head -> next;
int i = 0,count = 0;
while( p != NULL)
{
data[i] = p -> data;
p = p -> next;
i++;
count++;
}
q = head -> next;
while(q != NULL)
{
q -> data = data[count--];
q = q ->next;
}
}