本题要求实现一个函数,将给定的单链表逆转。
函数接口定义:
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->Next 的指向
第一种后续补充
【第二种思路】
List Reverse(List L){ List p1 = NULL,p2 = NULL; while(L){ p2 = L->Next; L->Next = p1; p1 = L; L = p2; } return p1; }
第一次就是将 p1 【 NULL】 赋值给 原链表的头结点的Next,然后让 p1 指向当前 L 结点。
下一次就是令 当前结点 L‘ 的 Next 指向上一个结点 L,从而修改原链表 List->Next 的指向
原文地址:https://www.cnblogs.com/expedition/p/12219032.html
时间: 2024-10-11 16:59:02