设计链表(模板题)

计算机网络简答题 协议定义了在两个或多个通信实体之间交换的报文格式和顺序,以及发送接收报文以及其他事件需要采取的操作。为。 阅读详情

Day 1

Date: September 24, 2022 12:31 PM
LinkedIn: https://leetcode.cn/problems/design-linked-list/
Title: 设计链表

get(index):获取链表中第 index 个节点的值。如果索引无效,则返回-1。
addAtHead(val):在链表的第一个元素之前添加一个值为 val 的节点。插入后,新节点将成为链表的第一个节点。
addAtTail(val):将值为 val 的节点追加到链表的最后一个元素。
addAtIndex(index,val):在链表中的第 index 个节点之前添加值为 val 的节点。如果 index 等于链表的长度,则该节点将附加到链表的末尾。如果 index 大于链表长度,则不会插入节点。如果index小于0,则在头部插入节点。
deleteAtIndex(index):如果索引 index 有效,则删除链表中的第 index 个节点。

struct Node{
    int val;
    struct Node *next;
};//数据节点

typedef struct {
    int val;
    int mount;
    struct Node *head;
} MyLinkedList;//头节点

MyLinkedList* myLinkedListCreate() {
    MyLinkedList *H=(MyLinkedList *)malloc(sizeof(MyLinkedList));
    H->mount=0;
    H->head=NULL;
    return H;
}

int myLinkedListGet(MyLinkedList* obj, int index) {
    struct Node *p=obj->head;//第一个节点
    if(index>obj->mount||index<0){
        return -1;
    }
    int value=-1;
    int count=0;
    while(p){
        if(count==index){
            value=p->val;
            break;
        }
        p=p->next;
        count++;
    }
    return value;

}

void myLinkedListAddAtHead(MyLinkedList* obj, int val) {

    struct Node *q=(struct Node*)malloc(sizeof(struct Node));
    q->val=val;
    q->next=NULL;
    if(obj->head==NULL){//头节点为空
        obj->head=q;
    }else{
        q->next=obj->head;
        obj->head=q;
    }
     obj->mount++; 
    
}

void myLinkedListAddAtTail(MyLinkedList* obj, int val) {
    int cnt=0;
   struct  Node *p=obj->head;
	 struct   Node *q =(struct  Node *)malloc(sizeof(struct Node));
    q->val=val;
    q->next=NULL;
     if(obj->head==NULL){//头节点为空
       obj->head=q;
     }else{
         while(p->next){
          p=p->next;
        }
        p->next=q;

     }

     obj->mount++; 

}

void myLinkedListAddAtIndex(MyLinkedList* obj, int index, int val) {
    if (obj->mount < index)
	{
    //插入的位置 大于节点的数量
    return;
    }
    if (index <= 0)
    {
    myLinkedListAddAtHead(obj, val);
    return;
    }
    struct Node* p   = obj->head;//p、q为第一个数据节点
    struct Node* q   = obj->head;
    int value = -1;
    int count = 0;  //从1开始 找到插入位置的前一个
    while (p != NULL)
    {
    if (count >= index)
    {
        break;
    }
    q=p;//前驱
    p = p->next;
    count++;
    }
    if(count==0){
        myLinkedListAddAtHead(obj,val);
    }
    else if(count==obj->mount){
        myLinkedListAddAtTail(obj,val);
    }else{
       struct   Node *w =(struct Node *)malloc(sizeof(struct Node));
       w->val=val;
       w->next=q-> next;
       q->next=w;
       obj->mount++;
    }
}

void myLinkedListDeleteAtIndex(MyLinkedList* obj, int index) {
    if(index>=0&&index<obj->mount){//index有效
      struct   Node *p=obj->head;
      struct   Node *q =obj->head;
      int count=0;
        while(p){
            if(count==index){
                break;
            }
            q=p;
            p=p->next;
            count++;
        }
        if(count==0){//obj中头节点空
            obj->head=obj->head->next;
        }else{
            q->next=p->next;
        }
        free(p);

        obj->mount--;     
    }
}

void myLinkedListFree(MyLinkedList* obj) {
   struct   Node *p=obj->head;
    while(obj->mount){
      struct   Node *q =(struct Node *)malloc(sizeof(struct Node));
        q=p;
        p=p->next;
        free(q);
        obj->mount--;
        
    }
    free(obj);//释放obj
}
RS422总线 ①.RS422发送驱动器无高阻三态(浮空)状态RS422收发芯片,发送脚固定强驱动输出,永远钳位 A/B 差分电平,不能关断、不能悬空,只要芯片上电,TX+、TX - 就强制输出互补电压(一路高、一路低)。多条发送并联在同一组差分线上:两个驱动器一个拉 A 高、一个拉 A 低,B 线反向拉扯 → 电源→地大电流对灌,瞬间芯片过流发烫烧毁、总线电平短路错乱。注意:RS485 带DE/RE 收发使能脚:不用发送时可关闭驱动器,输出变成高阻浮空,让出总线,因此能多节点分时发送。③.多点通信方式,一主多从方式; 阅读详情

相关推荐

数据助力行业发展:BJTU-RAO转向架数据集介绍

BJTU-RAO转向架数据集是完全公开的,何研究人员皆可以通过后文的下载链接免费下载数据,且在标注数据来源的前提下,研究人员可以自由使用BJTU-RAO转向架数据集。因此,聚焦各类列车转向架传动系统在途安全保障新技术研究和新算法开发,实现牵引电机、驱动齿轮箱和轴箱等关键部件的实时状态监测与智能故障诊断,对保障列车安全可靠运行具有重要的现实意义。BJTU-RAO转向架数据集包含51种健康状态的样本,涵盖正常状态、部件级单一故障、部件级复合故障以及系统级关联复合故障,数据量达116GB。

2401_88870554的博客 3501

力扣(LeetCode)904. 水果成篮(C语言)

hash数组+滑动窗口。

墨染 756

STM32F103 CAN通信避坑指南:从标准库配置到收发测试的完整流程

本文详细介绍了STM32F103 CAN通信的实现流程,从标准库配置到收发测试,帮助开发者避开常见陷阱。内容涵盖硬件连接、波特率计算、过滤器配置及错误处理等关键环节,提供实用的代码示例和调试技巧,确保CAN通信的稳定性和可靠性。

weixin_30627341的博客 324

leetcode 707设计链表 c语言实现

这道题我用c写的,写过程中出现了好多bug,唉,还是对链表不是很熟,比如在插入结点时,如果是首结点该如何处理。好在最后还能正常写出来了~~~ 题目描述 设计链表的实现。您可以选择使用单链表或双链表。单链表中的节点应该具有两个属性:val 和 next。val 是当前节点的值,next 是指向下一个节点的指针/引用。如果要使用双向链表,则还需要一个属性 prev 以指示链表中的上一个节点。假设链表中...

紫藤&code的博客 1897

【2025最新】Multisim 14.3超详细安装步骤 【附安装包+永久+汉化】|Multisim 14.3

嗨,小伙伴们!是不是一直在找可靠的multisim下载安装教程?今天就给大家带来超详细的2025年Multisim 14.3安装全攻略!这款电路仿真神器绝对是学电子、做电路设计的必备工具!很多朋友后台留言说安装时各种报错、汉化失败,所以我决定出一期零基础、保姆级的教程,从下载到安装再到汉化,全部一步到位搞定!按照我的步骤来,包你顺利安装不出错!!!通过本教程,相信大家已经成功安装并配置好了Multisim 14.3。这款电路仿真神器能帮你设计和测试各种电路,从简单的LED闪烁到复杂的信号处理电路都不在话下。

pythonpapaxia的博客 8万+

如何利用PREEvision和MATLAB开发AUTOSAR软件组件

在业界,比较著名的电子电气架构开发工具要属德国Vector公司开发的PREEvision工具了,而MATLAB/Simulink软件是非常高效且实用的基于模型的应用软件开发工具。利用PREEvision与Simulink联合开发AUTOSAR应用软件组件的开发流程有三种,分别是:“自上而下”开发流程(从PREEvision开始),“自下而上”开发流程(从Simulink开始),以及“双向”开发流程。如下图所示,无论哪一种开发流程,PREEvision与Simulink工具都是通过arxml文件进行信息交互的

怿星科技的博客 5396

LeetCode字符串题目汇总(C语言)

字符串题目大多数用滑动窗口法可以解决 3. 无重复字符的最长子串 int lengthOfLongestSubstring(char * s){ int len=strlen(s); if(len==0)return 0; int start=0,end=0; int flag[260]={0}; int maxlen=0; // for(in...

maryfei的博客 845

Coze智能体网页集成实战:从零搭建免登录AI助手

本文详细介绍了如何利用Coze Chat SDK从零开始为网站集成免登录AI助手。通过获取访问令牌和智能体ID,仅需几行JavaScript代码即可将功能完整的对话窗口嵌入网页,实现开箱即用的智能交互。文章重点讲解了核心部署步骤、会话隔离方案以及UI深度定制方法,帮助开发者快速打造贴合品牌、提升用户体验的网页AI助手。

gold8的专栏 558

力扣 链表707.设计链表

题目介绍 设计链表的实现。 您可以选择使用单链表或双链表。 单链表中的节点应该具有两个属性:val 和 next。val 是当前节点的值,next 是指向下一个节点的指针/引用。如果要使用双向链表,则还需要一个属性 prev 以指示链表中的上一个节点。假设链表中的所有节点都是 0-index 的。 这里我采用单链表的方式。 在链表类中实现这些功能: get(index):获取链表中第 index 个节点的值。如果索引无效,则返回-1。 addAtHead(val):在链表的第一个元素之前添加

m0_52733659的博客 235

CVAT自动标注避坑指南:如何解决Nuclio工程创建失败和镜像拉取问题

本文是一份针对CVAT自动标注部署中常见问题的实战排障指南。文章深入剖析了Nuclio工程创建失败的根源,提供了网络配置、服务状态检查等系统性解决方案,并详细讲解了如何解决gcr.io等海外镜像拉取难题,帮助开发者顺利完成CVAT自动标注环境的搭建与部署。

weixin_29207533的博客 233

【ACP】2025-最新-疑难题解析- 练习二汇总

全球加速是优化公网访问的,负载均衡是分发流量的,公网 NAT 网关是处理公网 IP 的,高速通道是建私网连接但不直接提供固定私网地址功能。C 是客户端加密方式,D 是 ECS 云盘加密,都不属于 OSS 服务器端加密。某企业想使用云服务器 ECS + 负载均衡 SLB + 弹性伸缩 (Auto Scaling) 的架构搭建一个企业级门户网站,技术负责人对于负载均衡和弹性伸缩配合使用没有经验,于是将他理解的两种产品配合使用的一些技术细节列成了一个表单,并请作为架构师的您帮他做一下鉴别,以下哪些项是正确的?

jundao1997的专栏 295

链表的设计

链表的设计与实现

qq_43666632的博客 922

WblockCloneObjects克隆一个图纸内的实体包括块参照,同名块参照的处理

public static void HeBingTu2(double lieJu, List<string> filePaths) { Document doc = Application.DocumentManager.MdiActiveDocument; Database db = doc.Database; using (DocumentLock docLock = doc.Lock...

1108

~~一般哈希(数据结构)(附模板题AcWing 840 模拟散列表)

(1) 拉链法 int h[N], e[N], ne[N], idx; // 向哈希表中插入一个数 void insert(int x) { int k = (x % N + N) % N; e[idx] = x; ne[idx] = h[k]; h[k] = idx ++ ; } // 在哈希表中查询某个数是否存在 bool find(int x) { int k = (x % N + N) % N; for (int i = h[k]; i != -1

Running Snail 364

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

栈与队列基础

栈是一种遵循后进先出(LIFO)原则的数据结构,类似叠盘子,最后放入的元素最先取出。其核心操作包括push(入栈)、pop(出栈)、peek(查看栈顶)等,时间复杂度均为O(1)。栈可通过数组或链表实现,在函数调用、表达式求值、撤销操作和DFS等场景有广泛应用。示例代码展示了数组和链表两种实现方式,体现了栈的高效性和实用性,是算法设计中重要的基础数据结构。

shentuyusen的博客 671

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

[模板题]单链表

来源: 模板题 算法标签 链表 题目描述 实现一个单链表,链表初始为空,支持三种操作: (1) 向链表头插入一个数; (2) 删除第k个插入的数后面的数; (3) 在第k个插入的数后插入一个数 现在要对该链表进行M次操作,进行完所有操作后,从头到尾输出整个链表。 注意:题目中第k个插入的数并不是指当前链表的第k个数。例如操作过程中一共插入了n个数,则按照插入的时间顺序,这n个数依次为:第1个插入的...

代码中枢:软件工程理论与实践的桥梁 500

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

算法基础2.1链表与邻接表,栈与队列,KMP

C++ STL简介vector, 变长数组,倍增的思想size() 返回元素个数empty() 返回是否为空clear() 清空[]支持比较运算,按字典序first, 第一个元素second, 第二个元素支持比较运算,以first为第一关键字,以second为第二关键字(字典序)string,字符串size()/length() 返回字符串长度empty()clear()substr(起始下标,(子串长度)) 返回子串。

sunluyang521的博客 974

单链表模板题

单链表的设计

ros275229的博客 199

【算法入门&链表】【模板】链表|反转链表|合并排序链表|删除链表的节点

本专栏收录的均为牛客网的算法题目,内含链表、双指针、递归、动态规划、基本数据结构等算法思想的具体运用。牛客网不仅有大量的经典算法题目,也有大厂的面试真题,面试、找工作完全可以来这里找机会。此外,网站内的编码主题多样化,调试功能可运用性强,可谓是非常注重用户体验。这么好的免费刷题网站还不快入手吗,快去注册开启算法百炼成神之路吧!

叶落秋白的博客 1290

[E链表] lc206. 反转链表(反转链表+模板题)

文章目录1. 题目来源2. 题目说明3. 题目解析方法一:迭代+原地逆置方法二:递归方法三:纯秀操作 1. 题目来源 链接:lc206. 反转链表 2. 题目说明 3. 题目解析 方法一:迭代+原地逆置 很经典,很易错,不要忘记处理最后的 head->next = NULL 情况。 参见代码如下: /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next;

Y-puyu 的博客 413

【编程题】——判断一个单向链表是否形成了环形结构

题目:判断一个单向链表是否形成了环形结构。 思路:定义两个指针,同时从链表的头结点出发,一个指针一次走一步,另一个指针一次走两步。如果走得快的指针追上了走得慢的指针,那么链表就是环形链表;如果走得快的指针走到了链表的末尾(next指向NULL)都没有追上第一个指针,那么链表就不是环形链表。 代码: # include<iostream> using namespace std...

Dr_Cassie的博客 671

LeetCode 707. 设计链表

【链表】链表设计的模板题,只写了单向链表,另外尾部插入用了一个rear表示链表最后一个节点本身,但是需要注意控链表插入的时候rear和head都要初始化;另外删除的时候如果把最后一个节点删了也要改rear。

Sasakihaise_的博客 2711

list模板题

题面: 设计一个int类型的动态链表L,L中有一个代表当前位置的光标,支持下列操作: insert(x): 在光标前面插入元素x,插入后光标指向新插入的元素x move(d): 如果d为正数,则光标向尾部移动d个位置,如果为负数,则向头部移动 erase(): 删除光标当前指向的元素,完成后光标向尾部移动一个位置,如果没有元素可指向,则光标值为END。 L的初始状态为空,且光标指向END...

ShineEternal的笔记小屋 306

LeetCode 0707. 设计链表:C++小详解,万字小长文:分别借助和不借助STL解决

LeetCode 0707. 设计链表:C++小详解,万字小长文:分别借助和不借助STL解决 设计链表的实现

<font color="Pink">Tisfy的博客</font> 893

手搓单链表【数组模拟】

单链表不会数组模拟的参考此博客:https://blog.csdn.net/Satur9/article/details/104072845?depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromBaidu-1&utm_source=distribute.pc_relevant_t0....

xiaoxiao66668的博客 252

链表--洛谷--队列安排

P1160 队列安排是洛谷经典的双向链表入门题,也是蓝桥杯、CSP-J 新手必练的模板题。本题核心考察双向链表的左右插入、节点删除、遍历输出,同时涉及删除标记数组的使用,非常适合巩固链表基础。本文将从题目分析、完整代码(超详细注释)、做题难点、核心知识点四个方面,彻底吃透这道题,帮新手避开所有坑。(其实写这道题的时候我遇到的难点是它需要判断重复的值和2~n)因为是同学被编号为 1∼N 所以不需要e[N]初始只有 1 号同学在队列中;2~N 号同学依次入列,每个同学需插入到已入列同学的左边或右边;

gaojinze11的博客 420
上一篇: Python 中print(f ‘ ‘) or print(f “ “) 的用法
下一篇: 力扣每日一题:旋转数字
只惠摸鱼
博客等级 码龄7年 128粉丝 61原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

只惠摸鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值