6-1 单链表逆转

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

函数接口定义:

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

参考:https://blog.csdn.net/autumn20080101/article/details/7607148

AC code:

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

原文地址:https://www.cnblogs.com/ruruozhenhao/p/9700133.html

时间: 2024-10-08 00:01:15

6-1 单链表逆转的相关文章

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是给定单链表,函数Rever

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

题目地址 本题要求实现一个函数,将给定的单链表逆转. 函数接口定义: List Reverse( List L ); 其中List结构定义如下: typedef struct Node *PtrToNode; struct Node { ElementType Data; /* 存储结点数据 */ PtrToNode Next; /* 指向下一个结点的指针 */ }; typedef PtrToNode List; /* 定义单链表类型 */ L是给定单链表,函数Reverse要返回被逆转后的链

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

题目链接:6-1 单链表逆转 (20分) 方式一:递归逆置单链表 1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <math.h> 4 #include <string.h> 5 #include <ctype.h> 6 7 #define maxn 5000 8 #define newline printf("\n") 9 10 11 typedef int Ele

单链表逆转问题

实现对含有n个元素的单链表的逆转,要求运行时间O(n),除了链表本身所需空间外,只使用固定大小的存储空间.(此题来自<算法导论>10.2-7) 从头元素开始循环,将原本指向其后继节点的指针指向其前驱节点,直到循环至哨兵为止.整个过程额外需要三个指针变量的空间,分别保存当前节点及其前驱.后继. 下面是一个简单的C++实现. struct Node { Node* pNext; int key; }; class SingleLinkedList { public: SingleLinkedLis

单链表逆转

参照:http://www.cnblogs.com/bluestorm/p/3167424.html #include <stdio.h> #include <stdlib.h> struct list{ char data; struct list *next; }node; struct list* input() { //p作为新结点,q不断连接新结点,h作为首结点返回 struct list *p,*q,*h = NULL; while(1) { //新创建一个结点 p =

【算法设计-单链表的逆转】单链表逆转实现

1.在Θ(n)时间内将链表转置,而且只能需要少量的额外空间 这里需要用3个指针使得q指向p然后依次后移. 代码: #include<iostream> using namespace std; typedef struct Node { int data; struct Node *next; }LinkList; LinkList* Create_End(); void printLinkList(LinkList *L); LinkList* Create_End() { LinkList

[PTA] 数据结构与算法题目集 6-1 单链表逆转

List Reverse(List L) { List p, q; p = L; q = L; L = NULL; while (p) { p = p->Next; q->Next = L; L = q; q = p; } return L; } 原文地址:https://www.cnblogs.com/ruoh3kou/p/9975225.html

pta-数据结构与算法题目集(中文)-4-1-单链表逆转

4-1 单链表逆转   (20分) 本题要求实现一个函数,将给定的单链表逆转. 函数接口定义: List Reverse( List L ); 其中List结构定义如下: typedef struct Node *PtrToNode; struct Node { ElementType Data; /* 存储结点数据 */ PtrToNode Next; /* 指向下一个结点的指针 */ }; typedef PtrToNode List; /* 定义单链表类型 */ L是给定单链表,函数Rev

单链表的逆转

算法导论:10.2-7 给出一个 O(n) 时间的非递归过程,实现对一个含有 n 个元素的单链表的逆转.要求除存储链表本身所需的空间外,该过程只能使用固定大小的存储空间. #ifndef _SINGLY_LINKED_LIST_H #define _SINGLY_LINKED_LIST_H /*********************************************************** 10.2-7 单链表类,并实现了在 O(n) 时间内链表的逆转 ***********