刘家窑做网站的公司,专业网站建设常州,室内设计网页,公司网站建设好题目
题意#xff1a;
在链表类中实现这些功能#xff1a;
get(index)#xff1a;获取链表中第 index 个节点的值。如果索引无效#xff0c;则返回-1。 addAtHead(val)#xff1a;在链表的第一个元素之前添加一个值为 val 的节点。插入后#xff0c;新节点将成为链表的…题目
题意
在链表类中实现这些功能
get(index)获取链表中第 index 个节点的值。如果索引无效则返回-1。 addAtHead(val)在链表的第一个元素之前添加一个值为 val 的节点。插入后新节点将成为链表的第一个节点。 addAtTail(val)将值为 val 的节点追加到链表的最后一个元素。 addAtIndex(index,val)在链表中的第 index 个节点之前添加值为 val 的节点。如果 index 等于链表的长度则该节点将附加到链表的末尾。如果 index 大于链表长度则不会插入节点。如果index小于0则在头部插入节点。 deleteAtIndex(index)如果索引 index 有效则删除链表中的第 index 个节点。
思路
创建成员变量size和head,在构造函数中初始化size和head。在增删节点的操作中维护变量size注意curr初始的指向位置和遍历循环的终止条件
实现
// package com.dj.mall.algorithm.node;//单链表
class ListNode {int val;ListNode next;ListNode(){}ListNode(int val) {this.valval;}
}class MyLinkedList {//链表长度int size;//虚拟头节点ListNode head;public MyLinkedList() {size 0;head new ListNode(0);}public int get(int index) {if(size 0 || index 0 || index size - 1){return -1;}ListNode curr head;//index 1的元素while(index 0){curr curr.next;index--;}return curr.val;}public void addAtHead(int val) {ListNode newNode new ListNode(val);ListNode temp head.next;head.next newNode;newNode.next temp;size ;}public void addAtTail(int val) {//遍历到最后一个节点ListNode curr head;while(curr.next ! null){curr curr.next;}curr.next new ListNode(val);size ;}public void addAtIndex(int index, int val) {if(index 0 || index size){return;}ListNode curr head;//将curr遍历到index-1的节点while(index 0){curr curr.next;index --;}ListNode newNode new ListNode(val);ListNode temp curr.next;curr.next newNode;newNode.next temp;size;}public void deleteAtIndex(int index) {if(index 0 || index size - 1){return;}ListNode curr head;while(index 0 ){curr curr.next;index --;}curr.next curr.next.next;size --;}// public static void main(String[] args) {// MyLinkedList myLinkedList new MyLinkedList();// myLinkedList.addAtTail(7);// myLinkedList.get(0);// myLinkedList.addAtHead(2);// myLinkedList.addAtHead(1);// myLinkedList.addAtIndex(3,0);// myLinkedList.deleteAtIndex(2);// myLinkedList.addAtHead(6);// myLinkedList.addAtTail(4);// myLinkedList.addAtHead(4);// myLinkedList.get(4);// myLinkedList.addAtIndex(5,0);// myLinkedList.addAtHead(6);// }}