展开
拓展 关闭
订阅号推广码
GitHub
视频
公告栏 关闭

模拟链表

  • 创建节点类
public class Node {
int n;
Node next;
}
  • 编写方法
public class MyLinkList {
Node head = new Node();
private int len=0;
// 获取长度
public int size(){
return len;
}
// 添加元素到最后
public void add(int n){
// 新建节点
Node node=new Node();
node.n=n;
// 如果头节点后没有元素,则直接拼接,如果有,则找到最后的元素
Node cur=head;
while (cur.next!=null){
cur=cur.next;
}
cur.next=node;
// 长度
len++;
}
// 查找指定位置的元素
public int get(int n){
// 从头节点开始一直找
Node cur=head;
for(int i=0; i<=n; i++){
cur=cur.next;
}
return cur.n;
}
// 插入元素到指定位置
public void add(int i, int n){
// 新建元素节点
Node node=new Node();
node.n=n;
// 找到指定元素的前一个
Node cur=head;
for(int j=0; j<i; j++){
cur=cur.next;
}
System.out.println("指定元素的前一个" + cur.n);
// 找到指定的元素
Node cur1 = cur.next;
System.out.println("指定元素" + cur1.n);
// 前一个元素后拼接传入的值
cur.next=node;
// 传入的值后拼接原来指定的值
node.next=cur1;
// 长度++
len++;
}
// 移除指定位置的元素
public void remove(int i){
// 找到指定元素的前一个
Node cur=head;
for(int j=0; j<i; j++){
cur=cur.next;
}
System.out.println("指定元素的前一个" + cur.n);
// 找到指定的元素
Node cur1 = cur.next;
System.out.println("指定元素" + cur1.n);
// 指定元素的后一个
Node cur2 = cur1.next;
System.out.println("指定元素的后一个" + cur2.n);
// 前一个元素直接拼接后一个元素
cur.next=cur2;
// 长度--
len--;
}
}
  • 测试
public class test {
public static void main(String[] args) {
MyLinkList list=new MyLinkList();
// 添加
list.add(10);
list.add(20);
list.add(30);
// 获取长度
System.out.println(list.size());
// 获取指定位置的值
System.out.println(list.get(1));
// 遍历
for (int i = 0; i < list.size(); i++) {
System.out.print(list.get(i) + ",");
}
System.out.println();
// 插入到指定位置
list.add(2,25);
// 测试
for (int i = 0; i < list.size(); i++) {
System.out.print(list.get(i) + ",");
}
System.out.println("目前长度:" + list.size());
// 移除元素
System.out.println();
list.remove(1);
// 测试
for (int i = 0; i < list.size(); i++) {
System.out.print(list.get(i) + ",");
}
System.out.println("目前长度:" + list.size());
}
}
posted @   DogLeftover  阅读(10)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
历史上的今天:
2022-09-29 马踏棋盘算法
2022-09-29 弗洛伊德算法
2022-09-29 迪杰斯特拉算法
点击右上角即可分享
微信分享提示