zoukankan      html  css  js  c++  java
  • 【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 }
  • 相关阅读:
    联赛前第五阶段总结
    陶陶摘苹果 —— 线段树维护单调栈
    联赛前第三阶段总结
    联赛前第四阶段总结
    [NOIP
    超级跳马 —— 矩阵快速幂优化DP
    我的博客园美化
    Wedding —— 2-SAT
    C++运算符优先级
    water——小根堆+BFS
  • 原文地址:https://www.cnblogs.com/wyjgr/p/13073245.html
Copyright © 2011-2022 走看看