经典笔试题——单向链表的倒序

简介: 经典笔试题——单向链表的倒序

题目:有一个单向链表,将链表倒序

解决方案:

单向链表的特点:链表节点只能从前往后遍历(不能从后往前遍历),那么在遍历链表时,必须从前往后处理这些数据。

方案1:

链表节点添加:头插、尾插

头插法:先插入数据,会被放在链表的后边,后插入的数据会被放在链表的前面。

实现步骤:新建一个新的链表,对旧的链表节点中的数据头插法插入到新的链表,旧的链表遍历完成后,新的链表也就创建完成,新的链表就跟旧的链表刚好是倒序的。

方案2:

直接在链表上进行操作,对链表节点进行遍历,把每一个节点都采用头插法插入到链表中。

示例代码:

void List_Invert(Node *head)
{
  if(head == NULL)
  {
    printf("list is Empty!\n");
    return ;
  }
  
  Node *p = head;     //前一个节点 
  Node *q = head->next; //后一个节点
  head->next = NULL;
  while(q != NULL)  //原来的链表实现了倒序
  {
    p = q;
    q = q->next;
  
    //p节点采用头插法插入到链表中  
    p->next = head->next;
    head->next = p;
  }

}
相关文章
【数据结构】单链表之--无头单向非循环链表
【数据结构】单链表之--无头单向非循环链表
186 2
|
存储 Python
Python 实现单向链表,和单向链表的反转
链表是一种数据结构,每个节点存储相邻节点的位置信息。单链表中的节点仅存储下一节点的位置。通过Python实现单链表,定义`ListNode`类并关联节点可创建链表。例如,创建A->B->C的链表后,可通过反转函数`reverse`将链表反转为CBA。代码展示了如何实现和操作单链表。
332 6
Python 实现单向链表,和单向链表的反转
|
存储
数据结构第二课 -----线性表之单向链表
数据结构第二课 -----线性表之单向链表
232 1
|
存储 JavaScript 前端开发
JavaScript实现单向链表
JavaScript实现单向链表
334 109
|
存储
【初阶数据结构】深入解析单链表:探索底层逻辑(无头单向非循环链表)(一)
【初阶数据结构】深入解析单链表:探索底层逻辑(无头单向非循环链表)
257 1
|
算法 Java
数据结构与算法学习六:单向环形链表应用实例的约瑟夫环问题
这篇文章通过单向环形链表的应用实例,详细讲解了约瑟夫环问题的解决方案,并提供了Java代码实现。
348 0
|
存储 缓存
【初阶数据结构】深入解析单链表:探索底层逻辑(无头单向非循环链表)(二)
【初阶数据结构】深入解析单链表:探索底层逻辑(无头单向非循环链表)
174 0
|
存储 算法
【单向链表】数据结构——单向链表的介绍与代码实现&笔记
【单向链表】数据结构——单向链表的介绍与代码实现&笔记
|
存储 程序员 C语言
链表篇---单向链表的C语言实现
链表篇---单向链表的C语言实现
|
算法 C语言
数据结构——单向链表(C语言版)
数据结构——单向链表(C语言版)
261 2