pta-数据结构与算法题目集(中文)-4-1-单链表逆转
2016-08-17 09:57
901 查看
4-1 单链表逆转 (20分)
本题要求实现一个函数,将给定的单链表逆转。
其中List结构定义如下:
L是给定单链表,函数Reverse要返回被逆转后的链表。
code:
本题要求实现一个函数,将给定的单链表逆转。
函数接口定义:
List Reverse( List L );
其中List结构定义如下:
typedef struct Node *PtrToNode; struct Node { ElementType Data; /* 存储结点数据 */ PtrToNode Next; /* 指向下一个结点的指针 */ }; typedef PtrToNode List; /* 定义单链表类型 */
L是给定单链表,函数Reverse要返回被逆转后的链表。
裁判测试程序样例:
#include <stdio.h> #include <stdlib.h> 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
code:
#include <stdio.h> #include <stdlib.h> 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; } List Read(){ int len = 0; int num = 0; PtrToNode list = NULL; PtrToNode last = NULL; scanf( "%d",&len ); if( 0 == len ){ return NULL; } scanf( "%d",&num ); list = ( PtrToNode )malloc( sizeof( struct Node ) ); list->Data = num; list->Next = NULL; last = list; len--; while( len > 0 ){ scanf( "%d",&num ); PtrToNode node = ( PtrToNode )malloc( sizeof( struct Node ) ); node->Data = num; node->Next = NULL; last->Next = node; last = node; len--; } return list; } void Print( List L ){ if( NULL == L ){ return ; } PtrToNode last = L; while( NULL != last ){ printf( "%d ",last->Data ); last = last->Next; } putchar( '\n' ); } List Reverse( List L ){ if( NULL == L ){ return NULL; } PtrToNode listre = NULL; PtrToNode t = L->Next; if( NULL == t ){ listre = L; return listre; } L->Next = t->Next; listre = t; t->Next = L; while( NULL != L->Next ){ t = L->Next; L->Next = t->Next; t->Next = listre; listre = t; } return listre; }
相关文章推荐
- PTA 数据结构与算法题目集(中文)5-4 是否同一棵二叉搜索树 (25分)
- pta-数据结构与算法题目集(中文)-4-2 顺序表操作集
- PTA 数据结构与算法题目集(中文)6-10
- PTA 数据结构与算法题目集(中文)6-6
- PTA 数据结构与算法题目集(中文)6-2
- PTA 数据结构与算法题目集(中文)6-5
- pta-数据结构与算法题目集(中文)--4-4 链式表的按序号查找
- pta-数据结构与算法题目集(中文)-4-3 求链式表的表长
- 数据结构与算法题目集(中文)——5-53 两个有序序列的中位数 (25分)——链表
- PTA 数据结构与算法题目集(中文)5-9 旅游规划 (25分)
- PTA 数据结构与算法题目集(中文)5-11 关键活动 (30分)
- PTA 数据结构与算法题目集(中文)5-7 六度空间 (30分)
- PTA 数据结构与算法题目集(中文)5-5 堆中的路径 (25分)
- PTA 数据结构与算法题目集(中文)6-11
- PTA 数据结构与算法题目集(中文)6-9
- PTA 数据结构与算法题目集(中文)5-8 哈利·波特的考试 (25分)
- PTA 数据结构与算法题目集(中文)6-1
- PTA 数据结构题目(1):最大子列和问题(分而治之、在线处理算法)
- 数据结构与算法题目集(中文)4-10 二分查找 (20分)
- 数据结构与算法题目集(中文)4-11 先序输出叶结点 (15分)