码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2020-01-20 19:11:39      阅读:83      评论:0      收藏:0      [点我收藏+]

标签:函数接口   com   补充   ever   ram   裁判   题目   node   set   

题目地址

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

函数接口定义:

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 的指向 

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

标签:函数接口   com   补充   ever   ram   裁判   题目   node   set   

原文地址:https://www.cnblogs.com/expedition/p/12219032.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!