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

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

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

解决方案:

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

方案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;
  }

}
相关文章
|
7月前
【数据结构】单链表之--无头单向非循环链表
【数据结构】单链表之--无头单向非循环链表
|
2月前
|
存储
【初阶数据结构】深入解析单链表:探索底层逻辑(无头单向非循环链表)(一)
【初阶数据结构】深入解析单链表:探索底层逻辑(无头单向非循环链表)
|
2月前
|
算法 Java
数据结构与算法学习六:单向环形链表应用实例的约瑟夫环问题
这篇文章通过单向环形链表的应用实例,详细讲解了约瑟夫环问题的解决方案,并提供了Java代码实现。
24 0
|
2月前
|
存储 缓存
【初阶数据结构】深入解析单链表:探索底层逻辑(无头单向非循环链表)(二)
【初阶数据结构】深入解析单链表:探索底层逻辑(无头单向非循环链表)
|
7月前
|
存储
数据结构第二课 -----线性表之单向链表
数据结构第二课 -----线性表之单向链表
|
4月前
|
存储 JavaScript 前端开发
JavaScript实现单向链表
JavaScript实现单向链表
25 0
|
6月前
|
存储 算法
【单向链表】数据结构——单向链表的介绍与代码实现&笔记
【单向链表】数据结构——单向链表的介绍与代码实现&笔记
|
6月前
|
算法 C语言
数据结构——单向链表(C语言版)
数据结构——单向链表(C语言版)
53 2
|
6月前
|
Java
单向环形链表-约瑟夫问题(java)
单向环形链表-约瑟夫问题(java)
|
6月前
|
存储 算法 前端开发
【C/数据结构与算法】:链表的实现(单向链表+双向链表)
【C/数据结构与算法】:链表的实现(单向链表+双向链表)
30 0