【PTA】数据结构6.1单链表逆转

【PTA】数据结构6.1单链表逆转

文章目录

  • 【PTA】数据结构6.1单链表逆转
    • 题目描述
    • 题解
    • 代码
    • 总结

题目描述

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

List Reverse( List L );

其中List结构定义如下:

typedef struct Node *PtrToNode;
struct Node {
    ElementType Data; /* 存储结点数据 */
    PtrToNode   Next; /* 指向下一个结点的指针 */
};
typedef PtrToNode List; /* 定义单链表类型 */

题解

设置两个指针,其中一个作为辅助用来存放要操作的链表,另一个链表,另一个在被赋值后先修改后继(相当于删除节点),再用头插法将节点插入到原有的链表中

代码

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;
}

总结

数据结构的基本操作之一,要掌握

你可能感兴趣的:(算法,数据结构)