数据结构——单链表逆序

简介: 数据结构——单链表逆序


目录

有头节点

三指针法

递归法

头插法

无头节点

三指针法

头插法


有头节点

三指针法

void Reverse(Node* head)
{
  Node* p,* q, *r=NULL;
  p = head->next;
  q = p->next;
  p->next = NULL;
  while (q)
  {
    r = q;
    q = q->next;
    r->next = p;
    p = r;
  }
  head->next = r;
}

递归法

void Reverse(Node* head,Node* p)//p=p->next
{
  if (p == NULL || p->next == NULL)//分别对应p为空表,p不为空表
  {
    head->next = p;
  }
  else
  {
    Node * pnext=p->next;
    Reverse(head,pnext);
    pnext->next = p;
    p->next = NULL;
  }
}

头插法

void Reverse_head(Node*head)
{
  Node* p, * q;
  p = head->next;
  head->next = NULL;
  while (p)
  {
    q = p->next;
    p->next = head->next;
    head->next = p;
    p = q;
  }
}

无头节点

三指针法

Node* Reverse(Node* head)
{
  Node* p, * q, * r=NULL;
  p = head;
  q = p->next;
  head->next = NULL;
  while (q)
  {
    r = q;
    q = q->next;
    r->next = p;
    p = r;
  }
  return r;
}

头插法

Node* Reversebyhead(Node*head)
{
  Node* p, * q;
  p = head->next;
  head->next = NULL;
  while (p)
  {
    q = p->next;
    p->next = head;
    head = p;
    p = q;
  }
  return head;
}
相关文章
|
1月前
【数据结构】单链表(长期维护)(1)
【数据结构】单链表(长期维护)(1)
|
11天前
|
存储 算法 C语言
数据结构基础详解(C语言):单链表_定义_初始化_插入_删除_查找_建立操作_纯c语言代码注释讲解
本文详细介绍了单链表的理论知识,涵盖单链表的定义、优点与缺点,并通过示例代码讲解了单链表的初始化、插入、删除、查找等核心操作。文中还具体分析了按位序插入、指定节点前后插入、按位序删除及按值查找等算法实现,并提供了尾插法和头插法建立单链表的方法,帮助读者深入理解单链表的基本原理与应用技巧。
|
4月前
|
存储
[数据结构]——单链表——超详解
[数据结构]——单链表——超详解
|
1月前
|
存储
【数据结构】单链表-->详细讲解,后赋源码
【数据结构】单链表-->详细讲解,后赋源码
22 4
|
1月前
|
算法 索引
【初阶数据结构篇】单链表算法题进阶
深拷贝应该正好由 n 个全新节点组成,其中每个新节点的值都设为其对应的原节点的值。
|
1月前
【数据结构】单链表(长期维护)(2)
【数据结构】单链表(长期维护)(2)
|
2月前
|
存储 DataX C语言
【数据结构】单链表
数据结构中的单链表
23 0
【数据结构】单链表
|
3月前
|
存储 测试技术
【数据结构】最最基础的链式结构——单链表,还不会你就吃大亏了!
【数据结构】最最基础的链式结构——单链表,还不会你就吃大亏了!
41 5
|
3月前
|
算法 程序员 数据处理
【数据结构与算法】使用单链表实现队列:原理、步骤与应用
【数据结构与算法】使用单链表实现队列:原理、步骤与应用
|
3月前
|
算法 C语言
【数据结构与算法 经典例题】返回单链表的倒数第 k 个节点
【数据结构与算法 经典例题】返回单链表的倒数第 k 个节点