美文网首页
链表相邻元素翻转

链表相邻元素翻转

作者: 小码弟 | 来源:发表于2018-10-14 11:07 被阅读0次

如题

思路:第一反应就是交换相邻两个节点的数据域,容易实现。但应记住第二种方法:交换指针域实现交换,如果链表有偶数个节点,交换相邻节点;如果有奇数个节点,交换除最后一个节点之外的其他相邻节点。


Snip20181014_2.png
void Reverse(LinkList head)
{
  if(head == NULL || head->next == NULL)
    return false;

  LNode* pre = head;
  LNode* cur = head->next;
  LNode* next = NULL;
  
  while(cur && cur->next)
  {
    next = cur->next->next; // 1)
    pre->next = cur->next;  // 2)
    cur->next->next = cur;  // 3)
    cur->next = next; // 4)
    pre = cur;
    cur = next;
  }
}

需要一次遍历:T(n) = O(n) , 空间=O(1)

相关文章

  • 链表相邻元素翻转

    如题 思路:第一反应就是交换相邻两个节点的数据域,容易实现。但应记住第二种方法:交换指针域实现交换,如果链表有偶数...

  • 1.7 翻转相邻元素

    示例:1>2>3>4>5>6>7 -> 2>1>4>3>6>5>7 LNode文件

  • c语言链表操作

    链表的创建 链表原地翻转 链表结点删除 头插法添加结点 修改链表某个结点的值 相当于查找元素,修改其关联元素的值 ...

  • 第三章 链表

    基本概念 链表的含义: 链表是一种用于存储数据集合的数据结构,具有以下属性 相邻元素之间通过指针相连 最后一个元素...

  • 数据结构与算法(第三章)

    一、 什么是链表? 链表是一种存储数据集合的数据结构。有以下特性: 1, 相邻元素之间通过指针连接。 2, 最后一...

  • 翻转链表

    翻转链表 描述翻转一个链表 样例给出一个链表1->2->3->null,这个翻转后的链表为3->2->1->nul...

  • 25. K 个一组翻转链表

    K个一组反转链表 翻转链表给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。 k 是一个正整数,它...

  • 1.2 从无序列表中移除重复项

    题目 给定一个未排序的链表,去掉其重复项,并保留原顺序,返回去掉后的列表。 若为有序链表,则和相邻元素比较即可。

  • 数据结构基础-链表

    什么是链表 链表是用来存储数据集合的数据结构。有如下属性: 相邻元素通过指针连接 最后一个的后继指针为NULL 链...

  • C封装单链表对象

    SingleLinkedList(单链表) github源码特点:1.用一组任意的存储单元存储数据元素,逻辑上相邻...

网友评论

      本文标题:链表相邻元素翻转

      本文链接:https://www.haomeiwen.com/subject/earzaftx.html