2019数据结构----单链表真题

思路:

(1)找到中间节点,将原链表一分为二

(2)后半段链表原地逆置

(3)合并链表

#include <stdio.h>
#include <stdlib.h>

//定义节点类型
typedef struct LNode {
    int data;//数据域
    struct LNode *next;//指针域
} LNode, *LinkList;

void tailList(LinkList &l) {
    l = (LinkList) malloc(sizeof(LNode));
    l->next = NULL;
    int x;
    scanf("%d", &x);//s指向新节点,r指向链表尾
    LinkList s, r = l;
    while (x != 9999) {
        s = (LinkList) malloc(sizeof(LNode));//s存储了这个节点的起始地址.s指向此节点
        s->data = x;
        r->next = s;//新节点给尾节点next指针
        r = s;//r指向新的尾部
        scanf("%d", &x);
    }
    r->next = NULL;
}

void printList(LinkList L) {
    L = L->next;
    while (L != NULL) {
        printf("%d", L->data);//打印当前结点数据
        L = L->next;//指向下一个结点
        if (L != NULL) {
            printf(" ");
        }
    }
    printf("\n");
}

void findMiddle(LinkList l, LinkList &l2) {
    l2 = (LinkList) malloc(sizeof(LNode));
    //双指针法遍历,前指针走两次,后指针走一次
    LinkList pcur = l->next;
    LinkList ppre = l->next;
    while (pcur) {
        pcur = pcur->next;
        if (pcur == NULL) {
            break;
        }
        pcur = pcur->next;
        if (pcur == NULL) {
            break;
        }
        ppre = ppre->next;

    }
    l2->next = ppre->next;
    ppre->next = NULL;
}

//三指针逆置链表
void reverseList(LinkList l2) {
    LinkList r, s, t;
    r = l2->next;
    if (r == NULL) {//可能无节点
        return;
    }
    s = r->next;
    if (s == NULL) {
        return;
    }
    t = s->next;
    while (t) {
        //第二个节点指向第一个节点
        s->next = r;
        //然后整体右移
        r = s;
        s = t;
        t = t->next;
    }
    s->next = r;
    l2->next->next = NULL;//逆置后链表尾部为NULL
    l2->next = s;
}

//三指针合并链表
void merge(LinkList l, LinkList l2) {
    LinkList pcur, p, q;
    pcur = l->next;//指向新链表的表尾
    p = pcur->next;
    q = l2->next;//p,q用来遍历两条原链表
    while (p && q) {
        pcur->next = q;
        q = q->next;
        pcur = pcur->next;
        pcur->next = p;
        p = p->next;
        pcur = pcur->next;
    }
    if (p) {
        pcur->next = p;
    }
    if (q) {
        pcur->next = q;
    }
}

int main() {
    LinkList l;
    LinkList l2;//存储第二条单链表头节点
    tailList(l);
    findMiddle(l, l2);
    reverseList(l2);
    merge(l, l2);
    free(l2);
    printList(l);
    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/302044.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Mysql 下载与安装教程(详细介绍与总结)

一&#xff1a;版本介绍 首先&#xff0c;我们需要先进入官网进行下载&#xff0c;在官网中有好几个版本&#xff0c;那么这里我分别简述一下MySQL各个版本区别&#xff1a; 1&#xff1a;企业版&#xff0c;MySQL Enterprise Edition 需要付费的&#xff0c;可以免费试用30天…

安全典型配置(六)配置IPSG限制非法主机访问内网案例(静态绑定)

相关文章学习&#xff1a; 安全典型配置&#xff08;一&#xff09;使用ACL限制FTP访问权限案例 安全典型配置&#xff08;二&#xff09;使用ACL限制用户在特定时间访问特定服务器的权限案例 安全典型配置&#xff08;三&#xff09;使用ACL禁止特定用户上网案例安全典型配置…

【REST2SQL】06 GO 跨包接口重构代码

【REST2SQL】01RDB关系型数据库REST初设计 【REST2SQL】02 GO连接Oracle数据库 【REST2SQL】03 GO读取JSON文件 【REST2SQL】04 REST2SQL第一版Oracle版实现 【REST2SQL】05 GO 操作 达梦 数据库 对所有关系数据的操作都只有CRUD&#xff0c;采用Go 的接口interface{}重构代码…

特斯拉难挽倒退?比亚迪为中国汽车市场改写历史

对于电动汽车这个新兴产业&#xff0c;特斯拉长期以来一直处于领头羊的位置&#xff0c;近年来也面临诸多测试。去年底欧洲报道特斯拉在瑞典遭遇罢工冲击&#xff0c;运营陷入诸多困扰&#xff0c;实在出人意料。更让人讶异的是&#xff0c;年终宣布新王者比亚迪在全球销量首次…

C语言——结构体类型(一)【结构体定义,创建,初始化和引用】

&#x1f4dd;前言&#xff1a; 在实际编程过程中&#xff0c;我们可能会希望把一些关联的数据存放在一起&#xff0c;这样方便我们使用。但是这些数据的类型有时候并不一致&#xff0c;例如一个学生的信息&#xff1a;有名字&#xff08;字符串&#xff09;&#xff0c;有年龄…

各大厂急招鸿蒙开发员,争抢鸿蒙工程师

去年9月&#xff0c;余承东宣布鸿蒙原生应用全面启动&#xff0c;华为开始了全面抛弃安卓的进程。 多家互联网公司也发布了鸿蒙OS的App开发工程师的岗位&#xff0c;开启了抢人大战。 有的企业开出了近百万的年薪招聘鸿蒙OS工程师&#xff0c;而华为甚至为鸿蒙OS资深架构师开…

python 各级目录文件读取

目录结构 import pytestdef test_01():# 同级文件with open(1.txt, r, encodingutf-8) as file:content file.read()print(content)def test_02():# 同级目录的下的文件with open(rupfile/2.txt, r, encodingutf-8) as file:content file.read()print(content)def test_03():…

大数据StarRocks(四) :常用命令

这次主要介绍生产工作中使用Starrocks时的常用命令 4.1 连接StarRocks 4.1.1 Linux命令行连接 [roothadoop1011 fe]# yum install mysql -y [roothadoop1011 fe]# mysql -h hadoop101 -uroot -P9030 -p4.1.2 Windows客户端 DBeaver 连接 4.2 常用命令 4.2.1 查看状态 1. 查…

低代码快速构建管理系统的实践思路

目录 一、前言 二、创建数据表 三、添加数据表属性 四、配置功能 五、数据筛选 六、数据集显示&功能发布 一、前言 很多时候&#xff0c;市场上的管理软件鱼龙混杂&#xff0c;找一些外包团队在实际应用中效果并不理想&#xff0c;项目中存在的问题也比较棘手。后面了…

视频如何制作微信表情?仅需一招在线制作

Gif动画表情包是当下一种非常流行的图片展示格式&#xff0c;能够通过gif格式的图片来调节聊天氛围或是传递信息&#xff0c;非常有趣。而gif动图现在也被各行各业的商家用作宣传使用&#xff0c;很吸引大众的目光。 那么&#xff0c;这种非常吸引人的gif动图是怎么制作的呢&a…

民营企业合规管理建设,重点有哪些?

民营企业在当前经济发展中占据着重要地位&#xff0c;但随之而来的是更多的法律法规和监管要求。因此&#xff0c;民营企业合规建设成为保障企业合法运营、稳定发展的关键。 首先&#xff0c;民营企业应重视法律遵从。确保企业各项经营活动符合国家法律法规和相关政策要求&…

rhel8安装

1. 2. 3. 4. 5. 6.默认 7.默认 8. 9.默认 10. 11. 12. 13.默认 14.默认 15.添加镜像 16.双击后&#xff0c;通过上下键选择第一个 &#xff08;第二个是测试镜像并安装&#xff0c;就是比较慢&#xff0c;建议选择第一个&#xff09; 17. 18. 19.让他自动分区就行了 20.开始安…

抖店入驻资质是什么?

我是电商珠珠 抖店的入驻资质是什么&#xff1f;这是很多新手关心的问题。 今天&#xff0c;我就来详细的跟大家讲一下。 一、营业执照 对于新手来说&#xff0c;准备一张个体的营业执照即可。营业执照可以去当地工商局免费办理&#xff0c;也可以去找代办。 代办的话需要…

《实战AI大模型》从入门到精通

文章目录 编辑推荐内容简介作者简介前言/序言入手传送门&#xff1a;参加抽奖 人工智能领域资深专家尤洋老师倾力打造&#xff0c;获得了李开复、周鸿祎、颜水成三位大咖鼎力推荐&#xff0c;一经上市就登上了京东“计算机与互联网”图书排行榜Top1的宝座。 编辑推荐 《实战AI…

10 分钟搞定 1 个门店,「沉浸式巡检」让巡查整改更身临其境

门店巡检起着确保品牌运营的标准性和规范性的作用&#xff0c;同时也是为了发现门店存在的问题和不足&#xff0c;为后续运营优化提供数据支撑。 不过&#xff0c;在实际的巡检过程中&#xff0c;效率问题却总是悬而未决。要让巡检真正发挥它的价值&#xff0c;就需要设置系统、…

编程模拟 NAT 网络地址转换(2024)

1.题目描述 参考计算机网络教材 188 页内容&#xff0c;模拟 NAT 路由器的工作过程&#xff0c;主要有 2 个步骤的工作&#xff1a;1、将收到的来自 内网报文中的私有源 IP 地址转换为 NAT 的外部合法 IP 地址&#xff0c;同时将传输层源端口号转换为 NAT 路 由器分配的端口号…

java数据结构与算法刷题-----LeetCode64. 最小路径和

java数据结构与算法刷题目录&#xff08;剑指Offer、LeetCode、ACM&#xff09;-----主目录-----持续更新(进不去说明我没写完)&#xff1a;https://blog.csdn.net/grd_java/article/details/123063846 很多人觉得动态规划很难&#xff0c;但它就是固定套路而已。其实动态规划只…

ECharts 图表简单示例,中国地图

目录 ECharts官网链接: [ECharts](https://echarts.apache.org/zh/index.html)在项目中引入 Apache ECharts柱状图折线图饼图仪表盘中国地图完整示例代码 ECharts官网链接: ECharts 在项目中引入 Apache ECharts <!DOCTYPE html> <html><head><meta char…

Python编程+copilot+代码补全+提高效率

Python编程copilot代码补全提高效率 copilot是由Github和OpenAI合作开发的一款AI编程工具&#xff0c;它可以根据自然语言或部分代码&#xff0c;自动给出合适的代码补全建议。copilot支持多种编程语言&#xff0c;包括Python&#xff0c;也可以在Pycharm等主流IDE中使用。本资…

stm32cube keil5第二次下载程序不成功

1.第一次下载成功&#xff0c;第二次需要按重置键下载然后松开能下载成功。是因为之前stm32cube默认设置了nodebug模式。修改读写模式第二次就可以下载。 2.keil5每次不用按钮重置按钮刷新程序 keil5设置。