数据结构——单链表逆序

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


目录

有头节点

三指针法

递归法

头插法

无头节点

三指针法

头插法


有头节点

三指针法

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;
}
相关文章
|
2月前
|
存储 编译器 C语言
【数据结构】C语言实现单链表万字详解(附完整运行代码)
【数据结构】C语言实现单链表万字详解(附完整运行代码)
47 0
|
2月前
|
存储
【数据结构入门指南】单链表
【数据结构入门指南】单链表
45 0
|
2月前
|
存储 算法 索引
数据结构与算法:单链表
朋友们大家好,本节来到数据结构与算法的新内容:单链表 在上篇文章中,我们知道顺序表通常需要预分配一个固定大小的内存空间, 通常以二倍的大小进行增容,可能会造成空间的浪费,本篇文章我们介绍的链表可以解决这个问题
|
2月前
|
存储
【单链表】数据结构单链表的实现
【单链表】数据结构单链表的实现
|
存储
数据结构--单链表
数据结构--单链表
|
2月前
|
存储 C++
数据结构第五弹---单链表
数据结构第五弹---单链表
|
5天前
|
C++
数据结构(循环单链表
数据结构(循环单链表
9 2
|
5天前
|
C++
数据结构(单链表
数据结构(单链表
7 0
|
8天前
|
存储
[数据结构]单链表(从0->1)
[数据结构]单链表(从0->1)
|
19天前
|
存储
数据结构基础:一篇文章教你单链表(头插,尾插,查找,头删等的解析和代码)
数据结构基础:一篇文章教你单链表(头插,尾插,查找,头删等的解析和代码)