数据结构——单链表逆序

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


目录

有头节点

三指针法

递归法

头插法

无头节点

三指针法

头插法


有头节点

三指针法

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;
}
相关文章
|
4月前
【数据结构】单链表(长期维护)(1)
【数据结构】单链表(长期维护)(1)
|
2月前
|
算法 程序员 索引
数据结构与算法学习七:栈、数组模拟栈、单链表模拟栈、栈应用实例 实现 综合计算器
栈的基本概念、应用场景以及如何使用数组和单链表模拟栈,并展示了如何利用栈和中缀表达式实现一个综合计算器。
43 1
数据结构与算法学习七:栈、数组模拟栈、单链表模拟栈、栈应用实例 实现 综合计算器
|
2月前
|
存储
[数据结构] -- 单链表
[数据结构] -- 单链表
26 1
|
3月前
|
存储 Java
java数据结构,线性表链式存储(单链表)的实现
文章讲解了单链表的基本概念和Java实现,包括头指针、尾节点和节点结构。提供了实现代码,包括数据结构、接口定义和具体实现类。通过测试代码演示了单链表的基本操作,如添加、删除、更新和查找元素,并总结了操作的时间复杂度。
java数据结构,线性表链式存储(单链表)的实现
|
2月前
|
存储
【数据结构】——单链表实现
【数据结构】——单链表实现
|
2月前
|
存储
数据结构2——单链表
数据结构2——单链表
35 1
|
2月前
|
存储
【初阶数据结构】深入解析单链表:探索底层逻辑(无头单向非循环链表)(一)
【初阶数据结构】深入解析单链表:探索底层逻辑(无头单向非循环链表)
|
2月前
|
存储
数据结构(单链表)
数据结构(单链表)
20 0
|
2月前
|
存储
数据结构--单链表
数据结构--单链表
|
3月前
|
存储 算法 C语言
数据结构基础详解(C语言):单链表_定义_初始化_插入_删除_查找_建立操作_纯c语言代码注释讲解
本文详细介绍了单链表的理论知识,涵盖单链表的定义、优点与缺点,并通过示例代码讲解了单链表的初始化、插入、删除、查找等核心操作。文中还具体分析了按位序插入、指定节点前后插入、按位序删除及按值查找等算法实现,并提供了尾插法和头插法建立单链表的方法,帮助读者深入理解单链表的基本原理与应用技巧。
658 6