当前位置: 首页 > news >正文

猿创征文|【数据结构】牛客网刷题

 💬推荐一款模拟面试、刷题神器 、从基础到大厂面试题:👉点击跳转刷题网站进行注册学习


目录

一、牛牛的单向链表 

二、 牛牛的链表交换

三、牛牛的单链表求和


一、牛牛的单向链表 

  • 先设定一个新的结点名用于存储新结点中包含的信息。
  • 设定一个新结构体访问头结点的位置,这个位置信息是由创建结点函数的返回值确定的。(链表开始的地方,不变,每次访问都是0x0)。
  • 从头结点开始遍历,判断是否为最后一个结点。(标志:最后一个结点的下一个结点指向NULL。)
    • 如果不是,则把结点首地址赋为该结点的下一个结点。
    • 再重新访问,直到最后一个结点。(此处需要一个while循环)
  • 到最后一个结点,它的下一个结点指向NULL,跳出循环,把新收到的结点赋给把最后一个结点,完成插入。
  • 结束后加一个count++可以用于计算链表长度或者尾插次数。

本题需要注意的是尾插函数的返回值,这个是由题目之中的输出要求得到的。

#include <stdio.h>
typedef struct Lnode{
    int data;
    struct Lnode *next;
}Lnode;
int main(){
    int n, temp;
    scanf("%d",&n);
    //头节点
    Lnode *L = (Lnode *)malloc(sizeof(Lnode));
    //r尾指针,用来连接尾节点和新建节点
    Lnode *s,*r= L;
    //建表
    while(n--){
        scanf("%d",&temp);
        s = (Lnode *)malloc(sizeof(Lnode));
        s->data = temp;
        r->next = s;
        r = s;
    }
    r->next = NULL;
    //遍历输出节点值
    while(L->next != NULL){
        L = L->next;
        printf("%d ",L->data);
    }
    return 0;
}

二、 牛牛的链表交换

 本题可以考虑先对数组前两个元素和后两个元素进行交换,再将数据拷贝整合至链表会方便很多。

#include<stdio.h>
#include<stdlib.h>
struct Node{
    int data;
    struct Node* next;
};
void swap(struct Node* HeadNode,int n){
    int i;
    HeadNode=HeadNode->next;
    int flag;
    for(i=0;i<n;i++){
        if(i==0){
            flag=HeadNode->data;
            HeadNode->data=HeadNode->next->data;
            HeadNode->next->data=flag;
            i++;
        }
        if(i==n-1){
            flag=HeadNode->data;
            HeadNode->data=HeadNode->next->data;
            HeadNode->next->data=flag;
        }
        HeadNode=HeadNode->next;
    }

}
void Print(struct Node* HeadNode){
    HeadNode=HeadNode->next;
    while(HeadNode->next!=NULL){
        printf("%d ",HeadNode->data);
        HeadNode=HeadNode->next;
    }
    printf("%d",HeadNode->data);
}
int main(){
    int n;
    scanf("%d",&n);
    int i;
    int num;
    struct Node* HeadNode=(struct Node*)malloc(sizeof(struct Node));
    struct Node* PosNode=(struct Node*)malloc(sizeof(struct Node));
    HeadNode->next=NULL;
    PosNode=HeadNode;
    for(i=0;i<n;i++){
        struct Node* newNode=(struct Node*)malloc(sizeof(struct Node));
        scanf("%d",&num);
        newNode->data=num;
        newNode->next=NULL;
        PosNode->next=newNode;
        PosNode=newNode;
    }
    swap(HeadNode,n);
    Print(HeadNode);
}

三、牛牛的单链表求和

 本题可以取巧,可以直接把数组中的值求和得到结果


 💬推荐一款模拟面试、刷题神器 、从基础到大厂面试题:👉点击跳转刷题网站进行注册学习

相关文章:

  • 【函数式编程】Java函数式编程学习
  • 基于springboot,vue旅游信息推荐系统
  • SSLError(MaxRetryError(‘HTTPSConnectionPool(host=\‘repo.anaconda.com\‘, port
  • vs生成dll且被java通过jna调用
  • DDD - 六边形架构和CQRS架构
  • 宠物寄养小程序实战教程02
  • 【计算机网络】运输层习题(谢希仁)(1)
  • 微信小程序抓包-夜神模拟器结合BurpSuite抓包(可用于现在最新版本微信)
  • SAR/毫米波雷达 论文阅读 | Freehand, Agile, and High-Resolution Imaging, IEEE Access 2019
  • 神经网络一词在英文中是,网络词神经质什么意思
  • KOOM原理讲解(上)-JAVA内存分析
  • create-vite‘ 不是内部或外部命令,也不是可运行的程序
  • 【JS】牛客专项练习01
  • 计算机组成原理 | 总线
  • 简单神经网络算法原理,最简单的神经网络算法
  • echarts的各种常用效果展示
  • JDK9: 集成 Jshell 和 Maven 项目.
  • Promise面试题2实现异步串行执行
  • React 快速上手 - 07 前端路由 react-router
  • Redis学习笔记 - pipline(流水线、管道)
  • uni-app项目数字滚动
  • 关于使用markdown的方法(引自CSDN教程)
  • 那些年我们用过的显示性能指标
  • 我的业余项目总结
  • 我感觉这是史上最牛的防sql注入方法类
  • #### go map 底层结构 ####
  • $(document).ready(function(){}), $().ready(function(){})和$(function(){})三者区别
  • (02)vite环境变量配置
  • (1)常见O(n^2)排序算法解析
  • (分布式缓存)Redis哨兵
  • (介绍与使用)物联网NodeMCUESP8266(ESP-12F)连接新版onenet mqtt协议实现上传数据(温湿度)和下发指令(控制LED灯)
  • (学习日记)2024.03.25:UCOSIII第二十二节:系统启动流程详解
  • (转)Linux NTP配置详解 (Network Time Protocol)
  • (转)linux 命令大全
  • .mysql secret在哪_MySQL如何使用索引
  • .net core 实现redis分片_基于 Redis 的分布式任务调度框架 earth-frost
  • .net mvc 获取url中controller和action
  • .net6使用Sejil可视化日志
  • @data注解_一枚 架构师 也不会用的Lombok注解,相见恨晚
  • @EnableAsync和@Async开始异步任务支持
  • [ CTF ]【天格】战队WriteUp- 2022年第三届“网鼎杯”网络安全大赛(青龙组)
  • [ vulhub漏洞复现篇 ] ECShop 2.x / 3.x SQL注入/远程执行代码漏洞 xianzhi-2017-02-82239600
  • [AX]AX2012 R2 出差申请和支出报告
  • [BUAA软工]第一次博客作业---阅读《构建之法》
  • [C\C++]读入优化【技巧】
  • [Contest20180313]灵大会议
  • [C语言]一维数组二维数组的大小
  • [GXYCTF2019]禁止套娃
  • [InnoDB系列] -- SHOW INNODB STATUS 探秘
  • [js高手之路] dom常用API【appendChild,insertBefore,removeChild,replaceChild,cloneNode】详解与应用...
  • [Manacher]【学习笔记】
  • [python] logging输出到控制台(标准输出)
  • [Python学习笔记][Python内置函数]
  • [Share]17个免费下载电子书的网站
  • [SystemC]SystemC中的模块和程序