本题要求实现一个函数,将给定的单链表逆转。
函数接口定义:
List Reverse( List L );
其中List结构定义如下:
typedef struct Node *PtrToNode;
struct Node {
ElementType Data;
PtrToNode Next;
};
typedef PtrToNode List;
L是给定单链表,函数Reverse要返回被逆转后的链表。
裁判测试程序样例:
#include
#include
typedef int ElementType;
typedef struct Node *PtrToNode;
struct Node {
ElementType Data;
PtrToNode Next;
};
typedef PtrToNode List;
List Read();
void Print( List L );
List Reverse( List L );
int main() {
List L1, L2;
L1 = Read();
L2 = Reverse(L1);
Print(L1);
Print(L2);
return 0;
}
输入样例:
5
1 3 4 5 2
输出样例:
1
2 5 4 3 1
1 2 5 4 3 1
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
List Reverse(List L){
List p=NULL,q=NULL;
while(L){
q=L->Next;
L->Next=p;
p=L;
L=q;
}
return p;
}
单链表的头插法
写的时候画的图,代码是敲对了,但不知道理解的对不对,贴上别人博客写的
PTA 陈越 数据结构习题 6-1 单链表逆转 (20分)_爱学习的图灵机的博客-CSDN博客



