链表:两个一组,反转链表

news2024/9/22 5:31:10

 1、针对单链表,当我们进行操作时,如果需要进行反转或者进行其他操作时,有链表断开的情况,不妨考虑下使用辅助指针来记录断开后的链表位置,将需要处理的数据处理好后,可以使用此辅助指针找到链表的位置

#include <stdlib.h>
/*
 两个一组的反转链表,用到的也是使用辅助指针,当反转的过程中,一定会将链表断开。
 如果我们想要找到接下来的链表,就需要事先记住断开的点位,前面的反转完后,再给它链接起来。再将头结点的位置往后移动。
 比如下面,使用带头结点的方式更便于对链表进行操作和移动指针。
*/
typedef struct Node{
    int val;
    struct Node * next;
}Nodes, *Linklist;
Nodes * initLinkList(int arr[], int size){
    if(arr == NULL){
        exit(1);
    }
    Nodes *head = (Nodes *)malloc(sizeof(Nodes));
    head ->next= NULL;                          //这里创建的是头结点,头指针head
    Nodes * p = head;
    int i=0;
    while(i < size){
        Nodes *newNodes = (Nodes *)malloc(sizeof(Nodes));
        newNodes->next=NULL;
        newNodes->val = arr[i];
        p->next = newNodes;
        p = newNodes;
        ++i;
    }
    return head;              //至于这里返回next,是因为下面遍历数据所用的是直接打印结点数据,需要从头结点下一个开始
}      
Linklist coupleReverse(Linklist head){
    Linklist curr = head;
    Linklist tmp = curr->next;
    Linklist tmp1 =curr->next->next->next;
    while(curr->next != NULL &&curr->next->next != NULL)
    {
        //方式一,参考代码随想录结果
        // Linklist tmp = curr->next;
        // Linklist tmp1 =curr->next->next->next;    //这个注释行感觉也可以,不过循环初始化新结点指针的话,总感觉会浪费空间,所以使用下面的方式了

        // curr->next = curr->next->next;
        // curr->next->next = tmp;  
        // curr->next->next->next = tmp1;

        // curr = curr->next->next;

        //方式二 
        tmp = curr->next;
        tmp1 =curr->next->next->next;      //这两行如果放在后面执行的话,就会出错,导致段错误,应该是超出链表空间了,下个例子测试下。

        curr->next = curr->next->next;
        curr->next->next = tmp;  
        tmp->next = tmp1;    

        curr = curr->next->next;

    }
    return head;
}
Nodes * display(Nodes * head){          
    if(head == NULL){
        exit(1);
    }
    Nodes * phead = head;        
    while(phead != NULL){
        printf("%d ",phead->val);
        phead = phead->next;
    }
    printf("\n");
}

int main(){
    int arr[] = {1,2,3,4,5,6,7,9};
    int size = sizeof(arr)/sizeof(arr[0]);
    Linklist head = initLinkList(arr,size);
    Linklist reverseHead = coupleReverse(head);
    display(reverseHead->next);

    return 0;

}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

服务器故障与管理口与raid

一&#xff0c;服务器常见故障 1&#xff0c;系统不停重启进入不了系统 排查是否是硬件故障&#xff0c;系统盘是否损坏&#xff08;硬盘灯红色&#xff0c;黄色&#xff0c;绿色&#xff09; 查看系统第一启动项是那种方式(硬盘 网络网卡 光驱 U盘) bios 是否双系统&#x…

使用命令行方式搭建uni-app + Vue3 + Typescript + Pinia + Vite + Tailwind CSS + uv-ui开发脚手架

使用命令行方式搭建uni-app Vue3 Typescript Pinia Vite Tailwind CSS uv-ui开发脚手架 项目代码以上传至码云&#xff0c;项目地址&#xff1a;https://gitee.com/breezefaith/uniapp-vue3-ts-scaffold 文章目录 使用命令行方式搭建uni-app Vue3 Typescript Pinia V…

C# ReaderWriterLock类学习

前言 今天这篇文章我们来学习一下ReaderWriterLock类&#xff0c;ReaderWriterLock类定义了实现单写程序和多读程序语义的锁。这个类主要用于文件操作&#xff0c;即多个线程可以读取文件&#xff0c;但只能用一个线程来更新文件。使用ReaderWriterLock类时&#xff0c;任意数…

并发(9)

目录 50.AQS的核心思想是什么&#xff1f; 51.AQS有哪些核心方法&#xff1f; 52.AQS定义什么样的资源获取方式&#xff1f; 53.AQS底层使用了什么样的设计模式&#xff1f; 54.什么是可重入&#xff0c;什么是可重入锁&#xff1f;他用来解决什么问题&#xff1f; 55.Ree…

wireshark抓包分析HTTP协议,HTTP协议执行流程,

「作者主页」&#xff1a;士别三日wyx 「作者简介」&#xff1a;CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」&#xff1a;对网络安全感兴趣的小伙伴可以关注专栏《网络安全入门到精通》 使用WireShark工具抓取「HTTP协议」的数据包&#…

超自动化助力企业财务转型升级

在快节奏的财务规划与分析环境中&#xff0c;传统的预算方法虽长期以来一直是企业制定有效决策的支柱&#xff0c;但已不足以驾驭当今复杂的商业环境。不断的经济变化、市场的不确定性以及利益相关者的需求增加促使企业寻求更敏捷的解决方案。如今&#xff0c;部分企业开始尝试…

关键字、标志符、变量、基本数据类型

1、关键字 1.1、定义 定义&#xff1a;被JAVA语言赋予了特殊含义&#xff0c;用作专门用途的字符串&#xff08;或单词&#xff09; 特点&#xff1a;全部关键字都是小写字母 上源码&#xff1a; 代码中定义类的关键字class&#xff0c;定义一个订单控制器类 ​​​​​​​…

try catch 应该在 for 循环里面还是外面

正文 首先 &#xff0c; 话说在前头&#xff0c; 没有什么 在里面 好 和在外面好 或者 不好的 一说。 本篇文章内容&#xff1a; 使用场景 性能分析 个人看法 1. 使用场景 为什么要把 使用场景 摆在第一个 &#xff1f; 因为本身try catch 放在 for循环 外面 和里面 …

7N65-ASEMI高压NPN型MOS管7N65

编辑&#xff1a;ll 7N65-ASEMI高压NPN型MOS管7N65 型号&#xff1a;7N65 品牌&#xff1a;ASEMI 连续漏极电流(Id)&#xff1a;4A 漏源电压(Vdss)&#xff1a;650V 栅极阈值电压&#xff1a;30V 单脉冲雪崩能量&#xff1a;150mJ 集电极电流&#xff08;脉冲&#xff…

【分布式微服务专题】SpringSecurity快速入门

目录 前言阅读对象阅读导航前置知识笔记正文一、Spring Security介绍1.1 什么是Spring Security1.2 它是干什么的1.3 Spring Security和Shiro比较 二、快速开始2.1 用户认证2.1.1 设置用户名2.1.1.1 基于application.yml配置文件2.1.1.2 基于Java Config配置方式 2.1.2 设置加密…

初识Linux shell

Linux初探 Linux系统可以划分为4个部分&#xff1a; Linux内核&#xff1a;Linux系统的核心&#xff0c;控制着系统的所有硬件和软件&#xff0c;在必要时分配硬件&#xff0c;并根据需要执行软件。 内核主要功能&#xff1a; 系统内存管理&#xff1a;内核通过硬件上称为交换…

Proxifier下载安装

一、下载地址 官网&#xff1a; https://www.proxifier.com/ 下载链接 https://www.proxifier.com/distr/ProxifierSetup.exe 因为这个跳转直接下载的&#xff0c;我放沙箱里试了一下 二、安装 安装就是同意协议&#xff0c;选择安装位置&#xff0c;因为是正版&#xff0c;他…

U-ViT【All are Worth Words: A ViT Backbone for Diffusion Models】

Motivation Diffusion中常用的Backbone是UNet&#xff0c;使用 resnet 和 transformer 交替进行的&#xff0c;这样内存memory存储 其实也是不断shuffle变化的&#xff0c;resnet 以 feature 看 memory&#xff0c;而 transformer 以 token 看memory。如果可以统一memory的计算…

Simpy简介:python仿真模拟库-02/5

一、说明 关于python下的仿真库&#xff0c;本篇为第二部分&#xff0c;是更进一步的物理模型讲解&#xff0c;由于这部分内容强依赖于第一部分的符号介绍&#xff0c;因此&#xff0c;有以下建议&#xff1a; 此文为第二部分&#xff0c;若看第一部分。建议查看本系列的第一部…

盲盒小程序搭建,功能优势分析

盲盒作为一种潮玩商品&#xff0c;吸引了大量的年轻人&#xff0c;受众群体非常高&#xff0c;在市场上的发展快速。盲盒拥有独特的优势&#xff0c;给消费者提供了新奇的购物体验&#xff0c;能够让人们在购物中体验到盲盒的不确定性所带来的惊喜感和快乐。 盲盒小程序的出现…

Echarts——使用graphic组件在一个option内同时设置两个饼图的背景图

使用echarts的graphic原生图形元素组件&#xff0c;为两个饼图设置对应背景。 <template><div id"app"><div class"charts" ref"charts"></div></div> </template><script> import * as echarts from…

计算机毕业设计 | SpringBoot+vue农产品商城 买菜购物网站(附源码)

1&#xff0c;绪论 1.1 项目背景 随着社会发展&#xff0c;网上购物已经成为我们日常生活的一部分。但是&#xff0c;至今为止大部分电商平台都是从人们日常生活出发&#xff0c;出售都是一些日常用品比如&#xff1a;食物、服装等等&#xff0c;并未发现一个专注于菜品的电商…

GEC6818传感器模块(烟雾+GY39+RFID)——使用文字取模的方式实现数据显示

GEC6818传感器模块(烟雾GY39RFID)——使用文字取模的方式实现数据显示 完整的工程大家可以在我的gitee上进行下载 下载地址&#xff1a;GEC6818智能语音家居系统 文章目录 GEC6818传感器模块(烟雾GY39RFID)——使用文字取模的方式实现数据显示一、 文字取模实现数据显示1. disp…

NPS 内网穿透安装

NPS 内网穿透安装 NPS分为服务端和客户端&#xff0c;对应的不同操作系统软件可以在GitHub RELEASES自行选择下载。 服务端搭建 由于个人非企业级使用&#xff0c;为了方便直接使用docker安装 1.docker运行 (注意需要提前下载conf文件&#xff0c;或者将镜像中文件copy出来…

多线程模板应用实现(实践学习笔记)

出处&#xff1a;B站码出名企路 个人笔记&#xff1a;因为是跟着b站的教学视频以及文档初步学习&#xff0c;可能存在诸多的理解有误&#xff0c;对大家仅供借鉴&#xff0c;参考&#xff0c;然后是B站up阳哥的视频&#xff0c;我是跟着他学。大家有兴趣的可以到b站搜索。加油…