当前位置:网站首页>707、设计链表(链表)
707、设计链表(链表)
2022-04-23 10:12:00 【Popuessing's Jersey】
题目:
在链表类中实现这些功能:
- get(index):获取链表中第 index 个节点的值。如果索引无效,则返回-1。
- addAtHead(val):在链表的第一个元素之前添加一个值为 val 的节点。插入后,新节点将成为链表的第一个节点。
- addAtTail(val):将值为 val 的节点追加到链表的最后一个元素。
- addAtIndex(index,val):在链表中的第 index 个节点之前添加值为 val 的节点。如果 index 等于链表的长度,则该节点将附加到链表的末尾。如果 index 大于链表长度,则不会插入节点。如果index小于0,则在头部插入节点。
- deleteAtIndex(index):如果索引 index 有效,则删除链表中的第 index 个节点。
public class Shejilianbiao {
//定义链表
static class ListNode{
int val; //数据:节点数据
ListNode next; //对象:引用下一个数据对象
//定义构造方法
ListNode(int val){
this.val = val;
}
}
static class MyLinkedList{
//size存储链表元素的个数
int size;
//虚拟头节点
ListNode head;
//初始化链表
public MyLinkedList(){
size = 0;
head = new ListNode(0);
}
//获取第index个节点的数值
public int get(int index){
//如果index非法,返回-1
if(index< 0 || index>=size){
return -1;
}
ListNode currentNode = head;
//使用for循环,查找第(index+1)个节点
for (int i = 0; i <=index ; i++) {
currentNode = currentNode.next;
}
return currentNode.val;
}
//在链表最前面插入一个节点
public void addAtHead(int val){
addAtIndex(0,val);
}
//在链表的最后插入一个节点
public void addAtTail(int val){
addAtIndex(size,val);
}
//在第index个节点之前插入一个新节点,例如index为0,那么新插入的节点为链表的新头节点。
//如果index等于链表的长度,则说明是新插入的节点为链表的尾结点
//如果index大于链表的长度,则返回空
public void addAtIndex(int index,int val){
if(index>size){
return;
}
if (index<0){
index=0;
}//插入节点,链表长度加一
size++;
//找到要插入的节点的前驱
ListNode pre = head;
for (int i = 0; i <index ; i++) {
pre = pre.next;
}
//新建要插入的节点
ListNode add = new ListNode(val);
//插入节的指针指向前一个节点的下一个节点
add.next = pre.next;
//前一个节点指向插入节点
pre.next = add;
}
//删除第index个节点
public void deleteAtIndex(int index){
//如果index超出范围,返回空
if(index < 0 || index >=size ){
return;
}
//删除节点,总的长度减一
size--;
ListNode pre = head;
for (int i = 0; i <index ; i++) {
pre = pre.next;
}
pre.next = pre.next.next;
}
}
public static void main(String[] args) {
MyLinkedList myLinkedList = new MyLinkedList();
myLinkedList.addAtHead(1);
myLinkedList.addAtTail(3);
myLinkedList.addAtIndex(1,2);
int x = myLinkedList.get(1);
myLinkedList.deleteAtIndex(1);
int y = myLinkedList.get(1);
System.out.println(x+","+y);
}
}
输出结果:
2,3
版权声明
本文为[Popuessing's Jersey]所创,转载请带上原文链接,感谢
https://blog.csdn.net/CoCo629vanilla/article/details/121408795
边栏推荐
- Realizing data value through streaming data integration (5) - flow analysis
- Juc并发编程06——深入剖析队列同步器AQS源码
- 杰理之更准确地确定异常地址【篇】
- Configuration of LNMP
- DBA common SQL statements (5) - latch related
- 域名和IP地址的联系
- 【省选联考 2022 D2T1】卡牌(状态压缩 DP,FWT卷积)
- Epidemic prevention registration applet
- Solve the problem of installing VMware after uninstalling
- 元宇宙时代的职业规划与执行
猜你喜欢

Sim Api User Guide(6)

2022茶艺师(初级)考试试题模拟考试平台操作

101. Symmetric Tree

Juc并发编程09——Condition实现源码分析
MapReduce计算流程详解

Operation of 2022 tea artist (primary) test question simulation test platform

Examination questions and answers of the third batch (main person in charge) of Guangdong safety officer a certificate in 2022

Comparative analysis of meta universe from the dimension of knowledge dissemination

元宇宙时代的职业规划与执行

Juc并发编程06——深入剖析队列同步器AQS源码
随机推荐
JVM——》常用参数
ansible 云计算 自动化 命令行精简版
lnmp的配置
Windows安装redis并将redis设置成服务开机自启
DBA常用SQL语句(4)- Top SQL
《谷雨系列》空投
Comparative analysis of meta universe from the dimension of knowledge dissemination
深度选择器
中控学习型红外遥控模块支持网络和串口控制
Odoo 服务器搭建备忘
Nine abilities of agile manufacturing in the era of meta universe
構建元宇宙時代敏捷制造的九種能力
PHP two-dimensional array specifies that the elements are added after they are equal, otherwise new
NEC infrared remote control coding description
SQL tuning series - SQL performance methodology
Pyqt5与通信
Go language practice mode - functional options pattern
DBA common SQL statements (2) - SGA and PGA
shell脚本免交互
Shell script interaction free