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

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

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

解决方案:

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

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

}
相关文章
|
4月前
【数据结构】单链表之--无头单向非循环链表
【数据结构】单链表之--无头单向非循环链表
|
4月前
|
存储
数据结构第二课 -----线性表之单向链表
数据结构第二课 -----线性表之单向链表
|
1月前
|
存储 JavaScript 前端开发
JavaScript实现单向链表
JavaScript实现单向链表
17 0
|
3月前
|
存储 算法
【单向链表】数据结构——单向链表的介绍与代码实现&笔记
【单向链表】数据结构——单向链表的介绍与代码实现&笔记
|
3月前
|
算法 C语言
数据结构——单向链表(C语言版)
数据结构——单向链表(C语言版)
38 2
|
3月前
|
Java
单向环形链表-约瑟夫问题(java)
单向环形链表-约瑟夫问题(java)
|
3月前
|
存储 算法 前端开发
【C/数据结构与算法】:链表的实现(单向链表+双向链表)
【C/数据结构与算法】:链表的实现(单向链表+双向链表)
23 0
|
4月前
|
算法 测试技术
【数据结构与算法 | 基础篇】单向循环链表实现队列
【数据结构与算法 | 基础篇】单向循环链表实现队列
【循环链表】数据结构——单向循环链表和双向循环链表操作&笔记
【循环链表】数据结构——单向循环链表和双向循环链表操作&笔记
|
4月前
|
测试技术 C语言
如何用C语言实现无头单向非循环链表Single List ?
这篇文档介绍了一个关于单链表数据结构的实现和相关操作。单链表是一种线性数据结构,每个元素(节点)包含数据和指向下一个节点的指针。文档中列出了单链表的图示,并提供了C语言实现单链表的代码,包括动态申请节点、打印链表、头插、尾插、头删、尾删、查找和在特定位置插入或删除节点等函数。 此外,文档还包含了三个测试用例(TestSList1至TestSList4),展示了如何使用这些函数创建、修改和操作单链表。这些测试用例涵盖了插入、删除、查找等基本操作,以及在链表中特定位置插入和删除节点的场景。
34 0