java链表,基操勿6,也勿喷

好久没更新博客了,写一篇有关链表的,同时练习一下java,看到的同志们多多包涵;

首先定义一下node;(可以定义成内部类)

*****不断更新*****

public class Node {
    int data;
    Node next;
    public Node(int data, Node next){
        this.data = data;
        this.next = next;
    }
}
public class LinkList {
    private Node first;
    private int size;




    /*清空*/
    public void clear() {
        size = 0;
        first = null;
    }

    /*获取某个对象*/
    public int get(int index) {
        return node(index).data;
    }

    /*index位置从新赋值*/
    public int set(int index, int data) {
        Node node = node(index);
        int old = node.data;
        node.data = data;
        return old;
    }

    /*在一个索引添加元素*/
    public void add(int index, int data) {
        if (index == 0) {
            first = new Node(data, first);
        } else {
            Node node = node(index-1);
            node.next = new Node(data,node.next);
        }
        size++;
    }

    /*删除某个位置的元素*/
    public void remove(int index) {
        Node node = first;
        if (index == 0) {
            first = first.next;// 头删
        } else {
            Node prev = node(index - 1);
            node = prev.next;
            prev.next = node.next;
        }
        size--;
    }

    public int indexOf(int data) {
        Node node = first;
        for (int i = 0; i < size; i++) {
            if (data == node.data) return i;
            node = node.next;
        }
        return -1;
    }

    /*某个索引的node*/
    public Node node(int index) {
        rangeCheck(index);
        Node node = first;
        for (int i = 0; i < index; i++) {
            node = node.next;
        }
        return node;
    }

    void rangeCheck(int index) {
        if (index < 0 || index >= size) {
            System.out.println("超出范围了");
        }
    }

    public String toString() {
        StringBuilder string = new StringBuilder();
        string.append("size=").append(size).append(",[");
        Node node = first;
        for (int i = 0; i < size; i++) {
            if (i != 0) {
                string.append(",");
            }
            string.append(node.data);
            node = node.next;
        }
        string.append("]");
        return string.toString();
    }

    /// 闲来无事翻转链表
    public Node recursionReverse(Node head) {
        if (head.next == null || head == null) return head;
        Node newHead = recursionReverse(head.next);
        head.next.next = head;
        head.next = null;
        return newHead;
    }

    /// 闲来蛋疼翻转链表
    public Node recursionForReverse(Node head) {
        Node newHead = null;
        while (head != null) {
            Node temp = head.next;
            head.next = newHead;
            newHead = head;
            head = temp;
        }
        return newHead;
    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值