【PTA】6-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 }

 

posted @ 2020-06-09 16:08  wyjgr  阅读(350)  评论(0编辑  收藏  举报