展开
拓展 关闭
订阅号推广码
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 @ 2023-09-29 15:36  DogLeftover  阅读(8)  评论(0编辑  收藏  举报