怎样完成java链表中的基础操纵(增、删、查、改)【JAVA教程】,实现,java,链表
作者:搜教程发布时间:2019-11-29分类:JAVA教程浏览:32评论:0
导读:链表也是一个线性的数据结构,与数组差别的是,链表在内存中的存储体式格局是随机存储。下面给出涵盖链表四个操纵的一个完全的例子,有几点须要注重的是:(一)在增编削查之前,都...
链表也是一个线性的数据结构,与数组差别的是,链表在内存中的存储体式格局是随机存储。
下面给出涵盖链表四个操纵的一个完全的例子,有几点须要注重的是:
(一)在增编削查之前,都须要对给出的下标举行边境推断;
(二)增添一个名为last的节点,能够轻易在链表的尾部举行操纵,省去了查找到最后一个节点的时候复杂度;
(三)在链表的内部插进去元素时,我们先找到要插进去位置的前一个节点prevNode,然后能够纪录下prevNode的next,插进去时先将prevNode的next指向要插进去的节点,再将要插进去的节点的next指向当前的next。这一点和C++中的操纵也略有差别;
(四)删除节点时,用removedNode来纪录删除节点的返回值,而且不要忘了size要减1。
相干免费视频教程引荐:java免费视频教程
操纵示例以下:
public class MyLinkedList { //定义一个静态的内部类 private static class Node{ int data; Node next; Node(int data){ this.data = data; } } private Node head; private Node last;//为了轻易尾部插进去元素的操纵 private int size;//size示意链表的现实长度 public void insert(int data, int index)throws Exception{ if(index < 0 || index > size) throw new IndexOutOfBoundsException("超越链表节点局限!"); Node insertedNode = new Node(data); if(size == 0){//插进去第一个元素时元素个数为0 head = insertedNode; last = insertedNode; }else if(size == index){//在链表的末端插进去 last.next = insertedNode; last = insertedNode; }else{ Node prevNode = get(index - 1); Node nextNode = prevNode.next; prevNode.next = insertedNode; insertedNode.next = nextNode; } size++; } public void update(int data, int index) throws Exception{ if(index < 0 || index >= size) throw new IndexOutOfBoundsException("超越链表节点局限!"); if(index == 0) head.data = data; else if(index == size - 1) last.data = data; else{ Node temp = get(index); temp.data = data; } } public Node remove(int index) throws Exception { if(index < 0 || index >= size){ throw new IndexOutOfBoundsException("超越链表节点局限!"); } Node removedNode = null;//不给removedNode分派堆内存 if(index == 0){ removedNode = head; head = head.next; } else if(index == size - 1){ //删除尾结点 Node prevNode = get(index - 1); removedNode = prevNode.next; prevNode.next = null; last = prevNode; } else{ Node prevNode = get(index - 1); Node nextNode = prevNode.next.next; removedNode = prevNode.next; prevNode.next = nextNode; } size--; return removedNode; } //查找链表元素 public Node get(int index) throws Exception{ if(index < 0 || index >= size){ throw new IndexOutOfBoundsException("超越链表节点局限!"); } Node temp = head; for(int i = 0; i < index; i++){ temp = temp.next; } // size--; return temp; } //输出链表 public void output(){ Node temp = head; while(temp != null){ System.out.println(temp.data); temp = temp.next; } } public static void main(String[] args) throws Exception{ MyLinkedList myLinkedList = new MyLinkedList(); myLinkedList.insert(3,0); myLinkedList.insert(7,1); myLinkedList.insert(9,2); myLinkedList.insert(5,3); myLinkedList.insert(6,1); myLinkedList.remove(0); myLinkedList.update(2,1); myLinkedList.output(); System.out.println(myLinkedList.size); } }
想相识更多相干教程能够接见:java开发入门
以上就是怎样完成java链表中的基础操纵(增、删、查、改)的细致内容,更多请关注ki4网别的相干文章!
相关推荐
- java经典面试题集锦(五)_JAVA教程,java,面试题
- java中的换行符是什么_JAVA教程,java,换行符
- Java中变量必须先定义后使用么_JAVA教程,java,变量
- java中怎么定义接口_JAVA教程,java,接口
- java中静态代码块有什么特点_JAVA教程,java,静态代码块
- java中return语句有什么作用_JAVA教程,java,return
- Java对文件的读写操作(图文详解)_JAVA教程,java
- java经典面试题集锦(四)_JAVA教程,java,面试题
- 八种基本数据类型分别是什么?_JAVA教程,java,基本数据类型
- java如何将字符串转为数组_JAVA教程,java,字符串,数组
你 发表评论:
欢迎- JAVA教程排行
-
- 1接口中只能定义常量和抽象方法,对么_JAVA教程,接口,常量,抽象方法
- 2java文件不能删除文件怎么办_JAVA教程,java
- 3java中sleep的用法是什么?_JAVA教程,java,sleep
- 4java eclipse无法运行怎么办_JAVA教程,java
- 5java图片显示不出来怎么办_JAVA教程,java
- 6java后台乱码怎么办_JAVA教程,java
- 7javascript和java的区别是什么_JAVA教程,javascript,java
- 8java生成随机数的三种方法_JAVA教程,java,随机数
- 9在java中,负责对字节代码解释执行的是什么_JAVA教程,java
- 最新文章
- 广而告之