`
美丽的小岛
  • 浏览: 308817 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

带头结点的单链表反转算法

阅读更多
// 带头结点的单链表反转算法
LinkList LinkList_Reverse( LinkList L )
{
    //用p记录后一个节点、q来记录中间,用r来记录前一个节点。
    LNode *p, *q, *r;
    if( !L || !L->next || !L->next->next )
    {
        return L;
    }
    p = L->next;
    q = p->next;
    p->next = NULL; 
    while( q )
    {
        r = q->next;
        q->next = p;
        p = q;
        q = r;
    }
    L->next = p;
    return L;
}

 

分享到:
评论

相关推荐

    带头结点的单链表,反转并输出

    带头结点的单链表,将其翻转,输出。typedef struct lnode { int data; struct lnode *next;/*指针域*/ } lnode,*linklist; /**linklist表示struct lnode类型的指针;lnode是别名*/

    数据结构作业带或不带头结点链表

    在本题目中,我们探讨的是两种常见的链表实现:带头结点和不带头结点的链表。这两种链表在C++编程语言中具有广泛的应用,是数据结构作业中的常见主题。 首先,链表是一种线性数据结构,其元素(节点)在内存中不是...

    将不带头结点的单链表倒置

    《数据结构与算法》(张宪超)给定一个不带头结点的单链表,写出将单链表倒置的算法

    带头结点的双向循环链表

    本项目以C++语言实现了带头结点的双向循环链表,这将有助于我们深入理解这一概念。 首先,双向循环链表与单链表的主要区别在于每个节点不仅包含数据,还包含两个指针:一个指向前一个节点,另一个指向后一个节点。...

    C语言实现单链表(带头结点)的基本操作.zip

    本项目"**C语言实现单链表(带头结点)的基本操作.zip**"显然专注于通过C语言创建和操作带有头结点的单链表。头结点是一个特殊的节点,它的数据字段通常不存储实际的数据,而是用作链表的起点。 首先,我们讨论链表...

    数据结构考研必背算法5星.docx

    3. **删除不带头结点单链表中所有值为X的结点(递归)**: 在这个递归算法中,首先检查链表头部是否需要删除,如果需要,删除并继续处理剩余部分。如果头部不需要删除,则递归处理链表的其余部分。 4. **删除带头...

    单链表操作详解(一)

    了解和熟练掌握单链表的基本操作,对于学习其他高级数据结构和算法至关重要。 总之,单链表是计算机科学中不可或缺的基础知识,它提供了灵活的数据存储方式,支持各种动态操作。通过实践和理解这些操作,可以为解决...

    python算法题 链表反转详解

    ### Python算法题:链表反转详解 在计算机科学与编程领域中,链表是一种常见的数据结构,被广泛应用于各种场景之中。链表反转是链表操作中最基础且重要的操作之一,它不仅能够帮助理解链表的基本操作原理,还能够在...

    第二章第2次单链表答案.ppt

    * 单链表可以是带头结点的,也可以是不带头结点的。 * 单链表的操作包括插入、删除、遍历等。 二、单链表的存储结构 * 使用typedef来定义单链表结点的数据类型,例如typedef int ElemType; * 使用struct来定义...

    JAVA单链表的简单操作(递增单链表插入数据,链表逆置,链表逆序合成)

    给定一个按整数值递增排序的带头结点的动态单链表L,我们需要在链表中插入值为x的结点,保持链表的有序性。为了实现这一操作,我们可以遍历链表,找到适当的位置将新结点插入。以下是一个简单的实现: ```java ...

    一些算法(美丽的小岛)

    8. **带头结点的单链表反转**:反转链表的经典问题,可以使用迭代或递归方法,注意处理头结点和边界条件。 9. **ELFHash**:一种简单的散列函数,用于将字符串映射到整数,常用于哈希表的键值计算。 10. **djb2、...

    链表倒置算法

    在给定的场景中,我们需要实现一个不带头结点的单链表的倒置算法。下面将详细介绍这个主题。 首先,理解单链表的结构至关重要。单链表是由一系列节点组成的数据结构,每个节点包含两部分:数据域(存储实际信息)和...

    ConsoleApplication3_suggesttmd_C++_

    具体来说,描述指出是关于“不带头结点的单链表倒置的算法与实现”,这将涉及链表数据结构和相关的操作。 在链表的领域,倒置链表是一种常见的操作,它涉及到将链表中的元素顺序反转。不带头结点的单链表意味着链表...

    数据结构课后习题2.doc

    2-4 题目要求反转一个带头结点的单链表。`reverse`函数通过改变每个结点的`next`指针,使其指向当前链表头结点的`next`,然后更新头结点的`next`为当前结点,实现了链表的反转。这个过程只需遍历一次链表,所以时间...

    2021116000109数据结构实验六.docx

    实验报告涉及的主题是数据结构,具体是关于链表的操作,特别是带头结点的单链表的就地逆置以及循环单链表的设计。这个实验旨在帮助学生深入理解链表的原理和操作方法,提升编程能力。 在链表的基本操作中,头结点是...

    数据结构及算法经典源程序集

    2. **带头结点双链循环线性表.c**:双链表是一种线性数据结构,每个元素有两个指针,分别指向其前一个和后一个元素。带头结点意味着链表的第一个元素是一个特殊的结点,不存储实际数据,而是作为链表的起始标志。...

    2014嵌入式软件工程师-笔试面试题总结 By Erik Lee

    首先,单链表反转是数据结构中的一个基本问题,它的核心在于通过交换节点的链接顺序来逆转链表的方向。在这个问题中,我们首先区分两种链表结构:带头结点和不带头结点的链表。对于带头结点的链表,头结点不存储数据...

    C语言基本算法

    "带头结点双链循环线性表.c"是关于双向链表的实现,双向链表每个节点包含前驱和后继的指针,允许在表的任何位置进行插入和删除操作。循环特性使得首尾相连,方便了环形结构的处理。 "定长串.c"涉及到字符串处理,...

    单链表的逆置的四种方法及部分代码实现

    其中,头插法和就地逆置法适合处理带或不带头结点的链表,而递归法更适合处理不带头结点的链表。迭代法通常被认为是最直观且易于理解的方法。开发者可以根据实际需求选择合适的方法来解决问题。

    数据结构上机源程序.pdf

    题目中使用带头结点的单链表,头结点不存储数据,用于方便操作。 3. 操作链表的算法: - 就地算法:在原始数据结构上进行修改,不需额外空间。本题要求设计一个就地算法将C拆分为两个线性表A和C,A包含所有奇数...

Global site tag (gtag.js) - Google Analytics