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

简介: 6-1 单链表逆转 (20 分)

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


函数接口定义:

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


输入样例:

1. 5
2. 1 3 4 5 2

结尾无空行


输出样例:

1. 1
2. 2 5 4 3 1

结尾无空行


List Reverse( List L )
{
    List p=NULL,t;
    while(L)
    {
        t=L->Next;
        L->Next=p;
        p=L;
        L=t;
    }
    return p;
}


目录
相关文章
|
2月前
LeetCode第二十四题(两两交换链表中的节点)
这篇文章介绍了LeetCode第24题的解法,即如何通过使用三个指针(preNode, curNode, curNextNode)来两两交换链表中的节点,并提供了详细的代码实现。
22 0
LeetCode第二十四题(两两交换链表中的节点)
|
6月前
|
算法
数据结构和算法学习记录——习题-翻转链表(不带表头结点逆置算法、带表头结点的链表逆置算法)
数据结构和算法学习记录——习题-翻转链表(不带表头结点逆置算法、带表头结点的链表逆置算法)
36 0
|
7月前
|
编译器 数据安全/隐私保护
PTA 线性表 7-1 约瑟夫环(Josephus)问题(by Yan) (100分) 按出列次序输出每个人的编号
PTA 线性表 7-1 约瑟夫环(Josephus)问题(by Yan) (100分) 按出列次序输出每个人的编号
|
7月前
乘积尾零啊填空题)
乘积尾零啊填空题)
22 0
|
7月前
|
算法 程序员
【算法训练-链表 一】【反转链表】反转链表、区间反转链表、K个一组反转链表
【算法训练-链表 一】【反转链表】反转链表、区间反转链表、K个一组反转链表
66 0
每日一题——链表中倒数最后k个节点
每日一题——链表中倒数最后k个节点
|
存储
第二期:链表经典例题(两数相加,删除链表倒数第N个节点,合并两个有序列表)
第二期:链表经典例题(两数相加,删除链表倒数第N个节点,合并两个有序列表)
89 0
|
算法
日拱算法: 删除链表的倒数第 N 个结点
平常基本上没有用过链表数据结构,链表的优势在于插入的时间复杂度良好 O(1)。 闲言少叙,冲就完事儿!
《牛客每日一题》链表分割、输出链表的倒数第k个结点
《牛客每日一题》链表分割、输出链表的倒数第k个结点
|
算法
面试技巧之带头节点单链表都有哪些例题呢,都整理在这里啦(归并两个带头结点有序链表;两个链表A B, 判断链表B是否为A的子序列;设A B两个链表为带头结点的单链表,且AB升序,求AB的交集)
面试技巧之带头节点单链表都有哪些例题呢,都整理在这里啦(归并两个带头结点有序链表;两个链表A B, 判断链表B是否为A的子序列;设A B两个链表为带头结点的单链表,且AB升序,求AB的交集)
154 0