PTA6-1 单链表逆转 (20分)
Posted wyjgr
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PTA6-1 单链表逆转 (20分)相关的知识,希望对你有一定的参考价值。
【PTA】6-1 单链表逆转 (20分)
函数接口定义:
1 List Reverse( List L );
其中 List结构定义如下:
1 typedef struct Node *PtrToNode; 2 struct Node { 3 ElementType Data; /* 存储结点数据 */ 4 PtrToNode Next; /* 指向下一个结点的指针 */ 5 }; 6 typedef PtrToNode List; /* 定义单链表类型 */
L是给定单链表,函数 Reverse要返回被逆转后的链表。
裁判测试程序样例:
1 #include <stdio.h> 2 #include <stdlib.h> 3 4 typedef int ElementType; 5 typedef struct Node *PtrToNode; 6 struct Node { 7 ElementType Data; 8 PtrToNode Next; 9 }; 10 typedef PtrToNode List; 11 12 List Read(); /* 细节在此不表 */ 13 void Print( List L ); /* 细节在此不表 */ 14 15 List Reverse( List L ); 16 17 int main() 18 { 19 List L1, L2; 20 L1 = Read(); 21 L2 = Reverse(L1); 22 Print(L1); 23 Print(L2); 24 return 0; 25 } 26 27 /* 你的代码将被嵌在这里 */
输入样例:
5 1 3 4 5 2
输出样例:
1 2 5 4 3 1
函数实现细节:
1 List Reverse(List L) 2 { 3 if(L==NULL)return NULL; 4 if(L->Next==NULL)return L; 5 List p,t,q; 6 int point=0; 7 q=p=t=L; 8 while(t!=NULL) 9 { 10 if(point==0) 11 { 12 p=q->Next; 13 q->Next=NULL; 14 t=p->Next; 15 p->Next=q; 16 point=1; 17 } 18 else 19 { 20 q=p; 21 p=t; 22 t=t->Next; 23 p->Next=q; 24 } 25 } 26 return p; 27 }
以上是关于PTA6-1 单链表逆转 (20分)的主要内容,如果未能解决你的问题,请参考以下文章