`
zjjzmw1
  • 浏览: 1366200 次
  • 性别: Icon_minigender_1
  • 来自: 开封
社区版块
存档分类
最新评论

链表倒序

    博客分类:
  • iOS
iOS 
阅读更多

2. 链表反转的问题
单向链表的反转是一个经常被问到的一个面试题,也是一个非常基础的问题。
例如:一个链表是这样的: 1->2->3->4->5 通过反转后成为5->4->3->2->1。最容易想到的方法遍历一遍链表,利用一个辅助指针,存储遍历过程中当前指针指向的下一个元素,然后将当前节点元素的指针反转后,利用已经存储的指针往后面继续遍历。源代码如下:
struct linka {
int data;
linka* next;
};

void reverse(linka*& head)
{
if(head ==NULL)
return;
linka*pre, *cur, *ne;
pre=head;
cur=head->next;
while(cur)
{
ne = cur->next;
cur->next = pre;
pre = cur;
cur = ne;
}
head->next = NULL;
head = pre;
}

分享到:
评论

相关推荐

    链表倒序__实现单向链表倒序

    链表倒序的实现方法主要有两种:迭代法和递归法。 1. 迭代法: 迭代法是通过三个指针,prev、curr和next来实现链表的反转。初始时,prev指向None,curr指向链表头节点,next用于临时存储curr的下一个节点。在循环...

    C++链表倒序实现方法

    最后,调用`reverse`函数将链表倒序,并使用`show`函数展示倒序后的链表。 通过这个实例,我们可以了解到C++链表操作的基本步骤和技巧,这对于深入理解数据结构和算法非常重要。在实际编程中,链表的倒序操作常被...

    java 实现倒序链表

    ### Java实现倒序链表 在本篇文章中,我们将探讨如何使用Java来实现一个倒序链表的功能。链表作为一种常见的数据结构,在计算机科学中有着广泛的应用,而倒序链表则是链表操作中的一项基本技能,对于理解链表的工作...

    数据结构中链表的倒序

    ****设计一算法,逆置带头结点的动态链表L。要求利用原表的结点空间,并要求用尽可能少的时间完成。 * ************************************************************************************************/

    c++链表逆序的几种方法

    C++链表逆序的几种方法 C++链表是一种常用的数据结构,它可以用来存储和操作大量的数据。链表逆序是指将链表中的元素顺序颠倒,这样可以实现一些特殊的操作,例如逆序输出链表中的元素。下面将介绍C++链表逆序的几...

    链表排序及数据结构

    为了实现倒序输出,我们可以从链表的尾部开始遍历,直到到达头部,这展示了链表的灵活性,因为可以在不改变数据顺序的情况下轻松改变输出顺序。 接下来的任务是构建一个双向循环链表。双向链表的每个节点不仅包含...

    链表逆序实验C语言源代码

    ### 链表逆序实验C语言源代码分析 #### 一、概述 本文将对一个使用纯C语言实现的链表逆序程序进行详细解析。该程序包含链表的创建、打印、逆序以及销毁等功能,非常适合C语言初学者理解和学习。 #### 二、程序...

    基于C++的链表操作

    // 链表倒序 void reverse(); // 删除重复元素 void removeDuplicates(); }; ``` 在链表类中实现这些方法: 1. 插入节点: 在链表末尾插入新节点,可以使用迭代或递归的方式实现。 ```cpp void LinkedList::...

    C语言数据结构实现链表逆序并输出

    ion is wrong!\n"); return; } ptr_node=(Node *)malloc(sizeof(Node)); //生成插入结点 if(!ptr_node) { printf("allocation failed.\n"); } else { ptr_node->value=... //链表长度加1 } } void DeleteListHead(ptr

    C++ 实现静态链表的简单实例

    C++ 实现静态链表的简单实例 静态链表是一种特殊的链表,它使用数组来存储节点,而不是使用指针。静态链表的每个节点都包含数据域和游标,游标用于指示当前节点的下一个元素的下标。静态链表具有链式存储结构的主要...

    链表就地倒序

    就地倒序,即链表的就地逆序操作,是一种优化的算法,它不需额外的存储空间,仅通过改变链表节点的指针关系就能实现链表的逆序。在C++中实现这样的功能,可以很好地展示对链表操作的理解和对内存管理的掌握。 首先...

    计算机软件技术基础上机编程.pdf

    `Nixu()`函数用于将链表倒序。它创建一个新的头节点,然后逐个将原链表的节点连接到新链表的末尾,最后返回新链表的头节点。 6. **主程序**: 主程序提供了一个交互式的菜单,允许用户选择执行链表的操作,如建立...

    H3C华三通信面试题_嵌入式-常用知识&面试题库_大厂面试真题.doc

    4. 将一个链表倒序。 这是一个典型的链表操作问题,需要使用递归或迭代算法来解决。我们可以使用递归算法来倒序链表,或者使用迭代算法来实现链表的倒序。 5. 编程实现一个双向链表的删除过程。 这是一个典型的...

    C#双向链表LinkedList排序实现方法

    在C#编程语言中,双向链表(LinkedList)是一种数据结构,它允许在列表的任一侧进行插入和删除操作,而不像数组那样需要移动大量元素。LinkedList类是.NET框架提供的,它包含两个指针:一个指向前一个节点,另一个...

    计算机软件技术基础上机编程.doc

    6. **链表的逆序输出**:`Nixu()` 函数将链表倒序。它使用三个指针 `r`、`q` 和 `p` 分别指向当前节点、当前节点的下一个节点和下下一个节点。在遍历过程中,它不断调整节点的指针关系,将链表反转。最后,返回新的...

    数据结构及算法实训内容及要求.pdf

    - **逆置**:将链表倒序,通过改变节点间的链接实现。 - **归并有序链表**:合并两个已排序的链表,保持排序,去重。 - **分解链表**:将链表分为两部分,奇数位置元素在一个链表,偶数位置在另一个,保持原顺序...

    铭万笔试_嵌入式-常用知识&面试题库_大厂面试真题.doc

    2. 链表倒序: 这是一个常见的链表操作,可以通过迭代或递归的方式实现。基本思想是创建一个新的链表,然后将原链表的节点逐一添加到新链表的头部,最后返回新链表的头指针。 3. 实现`string`类: - `find`函数...

    课程设计文档

    题目涵盖链式存储结构的序列合并、双栈模拟队列、多项式乘法、链表倒序、二叉树构造、图的深度优先搜索、有向图的强联通性判断以及简单的工资管理系统。这些题目覆盖了数据结构的核心内容,如链表、栈、队列、树、图...

    奇虎360 2016校园招聘面试题 一二面.pdf

    - **链表倒序输出**:不能改变链表结构,可以迭代或递归实现,每次取出头部元素并连接到结果链表尾部。 5. **编程工具** - **vim替换语句**:例如,使用`:s/abc/def/g`命令全局替换字符串。 6. **PHP字符串处理...

Global site tag (gtag.js) - Google Analytics