首页 > 其他分享 >设计链表

设计链表

时间:2024-05-27 23:55:12浏览次数:23  
标签:current val index int next 链表 设计 public

leetcode :707题

这题基本涵盖链表的的常用操作,

  • 获取第n个节点的值(从零开始)
  • 头部插入节点
  • 尾部插入节点
  • 第n个节点前插入节点
  • 删除第n个节点

C#:

public class MyLinkedList {

    public int count {get;set;}
    private  Node dummyHead;
    public MyLinkedList() {
        dummyHead = new Node(0);
        count=0;
    }
    
    public int Get(int index) {
        //判断下标是否为合法区间
        if(index<0 || index >=count)
        {
            return -1;
        }
        var current = dummyHead.next;
        while(index != 0 )
        {
            current=current.next;
            index--;
        }
        return current.value;
    }
    
    public void AddAtHead(int val) {
        var newNode = new Node(val);
        //注意要先将新节点指向头节点
        //再用虚拟头节点指向新节点,不然找不到原来的头节点了
        newNode.next = dummyHead.next;
        dummyHead.next = newNode;
        count++;
    }
    
    public void AddAtTail(int val) {
        
        var current = dummyHead;

        while(current.next!= null)
        {
            current = current.next;
        }
        var newNode = new Node(val);
        current.next = newNode;
        count++;
    }
    
    public void AddAtIndex(int index, int val) {
        if(index < 0 || index > count)
        {
            return;
        }
        var newNode = new Node(val);
        var current = dummyHead;
        while(index-- != 0)
        {
            current = current.next;
        }
        newNode.next = current.next;
        current.next = newNode;
        count++;
    }
    
    public void DeleteAtIndex(int index) {
        if(index<0 || index >= count)
        {
            return;
        }

       var current = dummyHead;
        while(index!= 0)
        {
            current =current.next;
            index --;
        }
        current.next = current.next.next;
        count--;
    }
    public class Node
    {
        public int value {get; set;}
        public Node next {get;set;}
        public Node(int val)
        {
            this.value=val;
            this.next = null;
        }
    }
}

/**
 * Your MyLinkedList object will be instantiated and called as such:
 * MyLinkedList obj = new MyLinkedList();
 * int param_1 = obj.Get(index);
 * obj.AddAtHead(val);
 * obj.AddAtTail(val);
 * obj.AddAtIndex(index,val);
 * obj.DeleteAtIndex(index);
 */

标签:current,val,index,int,next,链表,设计,public
From: https://www.cnblogs.com/ChuanC/p/18216883

相关文章

  • 基于Springboot的图书个性化推荐系统 计算机毕业设计
    视频演示基于Springboot的图书个性化推荐系统计算机毕业设计前言图书个性化推荐系统的主要使用者分为管理员和学生,实现功能包括:管理员:首页、个人中心、学生管理、图书分类管理、图书信息管理、图书预约管理、退换图书管理、管理员管理、留言板管理、系统管理学生......
  • 基于Java的高校学生勤工助学优派系统的设计与实现(论文+源码)_kaic
    摘  要高校勤工助学管理系统的出现,让学生的工作更加标准,不仅仅使高校办公室的办公水平以及管理水平大大提高,还优化了勤工助学资金的使用方式方法,完善了资助所需费用的资源配置,可以卓有成效地缩减学校的管理经费。本系统主要采取Java语言以及面向对象的开发模式,进行编码和......
  • 基于JAVA的高校学生请假管理系统的设计与实现(论文+源码)_kaic
    摘要随着我国越来越重视教育事业的发展,学生数量在大大增加,将用基于网络的学生‎‏管理系统融入高校管理日常事务处理中,达到改善教学管理效率的目的。本系统以Java语言进行编写设计,前端使用Vue,采用Springboot框架,利用Idea开发工具,运用MySQL数据库进行数据存储,主要流程为学......
  • 郑州大学2023-2024第二学期高级语言程序设计-实验6
    郑州大学2023-2024第二学期高级语言程序设计-实验61抗疫凯旋2求10个点到原点的距离和3最小公倍数4变量有多少字节?5是否是斐波那契家族的一员?6递归实现逆序输出整数7河南的抗疫英雄8出生年9汉诺塔问题10素因子分解1抗疫凯旋这道题已经给了提示如何在while......
  • 基于Web停车场管理系统的设计与实现(论文 + 源码)
    关于基于Web停车场管理系统.zip资源-CSDN文库https://download.csdn.net/download/JW_559/89365923基于Web停车场管理系统的设计与实现 摘要随着现代社会的快速发展,人民生活水平快速提高,汽车的数量飞速增加,在生活小区、办公场所、商场、景点等地方,停车难问题也日益突出......
  • 保险业务管理系统的设计与实现(论文 + 源码)
    保险业务管理系统.zip资源-CSDN文库https://download.csdn.net/download/JW_559/89361419保险业务管理系统的设计与实现摘要    历经二十余年的高速发展,我国保险行业的市场竞争已经达到白热化的程度,在同一个城市往往有数十家主体参与保险业务的竞争。保险企业的竞争异......
  • 协力服装厂服装生产管理系统的设计与实现
    摘 要本协力服装厂服装生产管理系统设计目标是实现协力服装厂服装生产的信息化管理,提高管理效率,使得协力服装厂服装生产管理作规范化、科学化、高效化。本文重点阐述了协力服装厂服装生产管理系统的开发过程,以实际运用为开发背景,基于Springboot框架,运用了Java编程语言和MY......
  • java Smart系统-题库及试卷管理模块的设计与开发
    摘 要SMART系统是一个采用新思路、新架构、新技术开发出来的一个新型智能在线考试信息管理系统,该系统主要实现了学生在线考试与评估以及对各种评估信息的管理和维护。本文针对教育工作的具体需求,用struts+spring+hibernate搭建的框架为设计平台,以B/S(Browser/Server)模式......
  • 第七十五节 Java设计模式 - 模板方法模式
    Java设计模式-模板方法模式在模板模式中,父抽象类公开几个抽象方法供子类实现。在父抽象类中有另一个方法或几个方法使用抽象方法来实现业务逻辑。抽象方法通常用于父类所需的每个步骤。例如,为了使用新的软件,我们需要下载,安装,配置和运行。如果我们要使用模板模式来编码逻......
  • 人工智能超万卡集群的核心设计原则和架构
    &nbsp;超万卡集群的核心设计原则和架构&nbsp;&nbsp;超万卡集群建设方兴未艾,当前主要依托英伟达GPU及其设备。英伟达GPU在大模型训练中表现卓越,但国产AI芯片虽进步显著,性能与生态构建仍存差距。面对诸多挑战,构建技术领先、基于国产生态的超万卡集群,仍需不断突破与创新。......