算法 链表 707.设计链表

一.前言

力扣 707.设计链表
在链表类中实现这些功能:

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 LinkedListOperation {
    public static void main(String[] args) {
        MyLinkedList linkedList=new MyLinkedList();
        linkedList.addAtHead(1);
        linkedList.addAtTail(3);
        linkedList.addAtIndex(1,2);
        linkedList.printList();//得在插入之后才能输出完整的
    }
}
class ListNode1{
    int val;
    ListNode1 next;
    ListNode1(){}
    ListNode1(int val){
        this.val=val;
    }
}


class MyLinkedList{
    ListNode1 head;
    int size;

    public MyLinkedList(){
        head=new ListNode1(0);
        size=0;
    }

    public int get(int index){
        if (index<0||index>=size){
            return -1;
        }
        ListNode1 current=head;
        for (int i=0;i<index;i++){
            current=current.next;
        }
        return current.val;
    }

    public void addAtHead(int val){
        addAtIndex(0,val);
    }

    public void addAtTail(int val){
        addAtIndex(size,val);
    }

    public void addAtIndex(int index,int val){
        if (index>size){
            return;
        }
        if (index < 0) {
            index = 0;
        }
        size++;
        ListNode1 pred=head;
        for (int i=0;i<index;i++){
            pred=pred.next;
        }
        ListNode1 toAdd=new ListNode1(val);
        toAdd.next=pred.next;
        pred.next=toAdd;
    }

    public void deleteAtIndex(int index){
        if (index<0||index>=size){
            return;
        }
        size--;
        ListNode1 pred=head;
        for (int i=0;i<index;i++){
            pred=pred.next;
        }
        pred.next=pred.next.next;
    }

    public void printList(){
        ListNode1 current=head;
        while(current !=null){
            System.out.print(current.val+" ");
            current=current.next;
        }
    }
}

三.总结

先创建ListNode1链表数据结构。再定义MyLinkedList类中定义链表的操作方法。最后用在main中创建对象并调用方法。

  • 8
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值