4-1 单链表逆转 (20分)

来源:互联网 发布:isis软件安装 编辑:程序博客网 时间:2024/06/05 04:18

本题要求实现一个函数,将给定的单链表逆转。

函数接口定义:

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;}/* 你的代码将被嵌在这里 */

输入样例:

51 3 4 5 2

输出样例:

12 5 4 3 1

思路:

新建一个L2链表,顺序取L中的节点,并且都指向L2,每次更新L2。




List Reverse( List L){PtrToNode t = NULL;PtrToNode L2  = NULL;while(L!=NULL){t = L->Next;L->Next = L2;L2 = L;L = t;}return L2;}


1 0
原创粉丝点击