`
zy3381
  • 浏览: 157532 次
  • 性别: Icon_minigender_1
  • 来自: 昆明
社区版块
存档分类
最新评论

链表逆序(链表倒置)

 
阅读更多
将一个链表按逆序排列,即将链头当链尾,链尾当链头

#include<stdio.h>
struct Node
{
    int data;
    struct Node *next;
};

//创建链表
struct Node *create(int n,int count)
{
    int i;
    struct Node *head,*p1,*p2;
    head = p1 = p2 = (struct Node*)malloc(sizeof(struct Node));
    head->data = n;
    for(i=1; i<count; i++)
    {
        p1 = (struct Node*)malloc(sizeof(struct Node));
        p1->data = i+n;
        p2->next = p1;
        p2 = p1;
    }
    p2->next = NULL;
    return head;
}

//链表逆序(用两个指针跑到后面往前指)
struct Node *reverse(struct Node *p)
{
    struct Node *p1,*p2,*head;
    p1 = p2 = head = p;
    while(p != NULL)
    {
        p = p->next;
        if(p1 == head)
        {
            p1->next = NULL;
        }
        else
        {
            p1->next = p2;
        }
        p2 = p1;
        p1 = p;
    }
    return p2;
}

void main()
{
    struct Node *p,*head;
    //创建链表
    head = p = create(3,5);

    printf("链表初始数据:\n");
    while(p)
    {
        printf("%d\n", p->data);
        p = p->next;
    }

    p = head;

    printf("\n逆转链表:\n");
    p = reverse(p);
    while(p)
    {
        printf("%d\n", p->data);
        p = p->next;
    }
}













分享到:
评论

相关推荐

    数据结构链表排序数据结构课设,链表排序,升序,逆序,倒置

    本项目“数据结构链表排序数据结构课设”旨在通过实际操作加深对链表排序的理解,包括升序、逆序和倒置等操作。 链表不同于数组,它不连续存储数据,而是通过节点之间的指针链接。每个节点包含数据元素和指向下一个...

    链表的倒置

    在给定的C++代码示例中,我们可以通过分析其结构和功能,深入理解链表倒置的具体实现过程。 ### 核心知识点 #### 1. 链表结构定义 链表是一种常见的数据结构,由一系列节点组成,每个节点包含数据元素和指向下一个...

    给定一个不带头结点的单链表,写出将链表倒置的算法

    给定一个不带头结点的单链表,写出将链表倒置的算法

    C++用链表完成学籍管理系统

    - 将链表中的节点顺序反转,实现数据的逆序访问。 #### 代码框架与实现逻辑 - 主函数(`main()`)作为程序入口,提供了用户界面,允许用户选择不同的操作。 - 使用`switch`语句根据用户输入执行相应的功能模块。 ...

    将两个升序链表A、B合并到C,并使C成为降序

    方法一:依次比较A、B的各结点,将较小的赋给C,A、B结点都赋给C后,再将C表逆序,得到降序表; 方法二:依次比较链表A、B,然后将结点赋给C表,在C中表从头结点前面进行插入操作,最后直接得到降序的C表。

    validnumberleetcode自动机-coderjia-to-architect:JiA同学的代码人生,各种优秀语言、框架、中间件、神

    链表逆序 判断链表是否有环 将数组整体向后移动n个位置 合并两个有序链表 合并两个有序数组 数字加一 栈和队列(6) 括号匹配问题 哈希表和二叉树(8) 算法 递归(12) 分治回溯(5) 深度优先广度优先(8) ...

    桂电数据结构实验一-线性表.doc

    这需要创建一个新的链表,然后依次将原链表的元素逆序插入新链表中。 代码分析: - `main`函数中,首先分配了一个头节点`L`,然后通过循环读取用户输入并创建新的节点,将它们链接到链表中。 - 查找元素20时,使用...

    利用栈实现逆置单链表

    2. **逆序输出**:从栈顶开始,依次弹出数据,按照弹出的顺序重新构建一个新的链表或直接打印出逆序的结果。 #### 三、代码解析 接下来,我们将结合给定的部分代码,分析如何具体实现上述思路。 ```c #include #...

    单链表相关的基本操作(从文件中读入)

    在本文件中,我们探讨了如何使用C++进行单链表的相关操作,包括初始化、构建链表、插入元素、删除元素、判断链表是否为空以及倒置链表。 首先,`initLinkList`函数用于初始化链表,创建一个带头结点的空链表。这...

    栈和队列(基础知识,单项选择题,填空题,简答题,程序)

    1. 实现循环队列的倒置可以采用辅助栈的方法,首先将队列的所有元素依次出队并入栈,再将栈中所有元素出栈并重新入队,即可实现队列内容的倒置。 综上所述,栈和队列在数据结构中占据核心地位,熟练掌握其原理和...

    传智播客扫地僧视频讲义源码

    04_字符串反转_方法2递归逆序(3个点)_传智扫地僧 05_考试题解答和项目开发代码书写手法 06_一级指针易错模型分析_重点 07_C语言中的const知识点总结 08_指针的输入和输出模型 09_课堂答疑_指针所指向内存释放 10_...

    数据结构的8个实验报告

    实验要求学生实现单链表的插入功能,以及链表的倒置操作,这涉及到了链表节点的创建、连接以及遍历。 4. **二叉树左右子树交叉互换**: 二叉树是数据结构的一种,其每个节点最多有两个子节点。实验可能要求学生...

    C程序设计谭浩强期末考试题终版.pdf

    - 第1题程序输出的是一个矩阵的逆序遍历,矩阵由星号构成,每行从右到左输出,形成一个倒置的金字塔。 - 第2题程序计算两个字符串相同字符的个数,`x`记录了相同字符的数量。 - 第3题程序展示了位移运算,`a表示...

    C程序范例宝典(基础代码详解)

    实例091 双链表逆序输出 120 实例092 约瑟夫环 122 实例093 创建顺序表并插入元素 123 实例094 向链表中插入结点 125 实例095 从链表中删除结点 126 实例096 合并两个链表 129 实例097 单链表就地逆置...

    2、线性结构1

    **简单应用**包括线性表的倒置、根据访问频度调整顺序、一元多项式的表示和相加、栈的逆序输出、括号匹配、计算器以及数制转换等。这些应用体现了线性结构在实际问题中的广泛适用性。 总结来说,线性结构是数据结构...

    三级C南开100题精华分类

    十、字符串(单词)的倒置和删除:测试字符串处理的灵活性,包括字符串的逆序、插入、删除等操作,以及对空格和标点符号的处理。 十一、选票问题:可能是数据结构的问题,例如使用链表存储选票数据,进行计票统计。...

    数据与算法课件:9 排序.pdf

    在排序过程中,可能会遇到逆序(倒置)的情况,即原始序列中的两个元素顺序与排序目标相反。逆序的数量可以反映排序前后的差异,并可能影响排序算法的效率。根据排序后两个相等关键字的元素相对位置是否改变,排序...

    (数据结构C语言版)顺序表和单链表的逆置.docx

    printf("\n倒置顺序表的结点数:\n"); display(); return 0; } ``` 单链表逆置操作: ```c #include #include typedef struct Node { int data; struct Node *next; } LNode, *PLNode; PLNode Creat_Link...

    数据结构实验报告.docx

    在程序源代码部分,通常会包含栈的定义(可能是用数组或链表实现)、压栈、弹栈、检查栈满和空的函数,以及主函数中实现上述逻辑的代码。由于这部分内容未提供,我们无法直接展示具体的代码实现,但理解上述逻辑对于...

Global site tag (gtag.js) - Google Analytics