`
zjjzmw1
  • 浏览: 1367974 次
  • 性别: 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++的链表操作

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

    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字符串处理...

    课程设计文档

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

    奇虎360 2014校园招聘面试 一二面.doc

    - **链表倒序输出**:利用头尾交换思想,不改变链表结构,且不使用额外空间。 5. **编程工具**: - **vim替换语句**:vim编辑器提供了强大的文本替换功能,如`:s/abc:def/g`可将所有abc替换为def。 - **调试原理...

Global site tag (gtag.js) - Google Analytics