日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

链表LinkedList的Java实现

發布時間:2025/3/12 java 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 链表LinkedList的Java实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一:節點類(Node.java)

package cn.ZiJiCollection;public class Node {//每個節點包含三個內容Node previous;Node next;Object element;public Node(Node previous, Node next, Object element) {super();this.previous = previous;this.next = next;this.element = element;}public Node(Object element) {super();this.element = element;}}

二:SxtLinkedList.java

package cn.ZiJiCollection;public class SxtLinkedList<E> {//定義初始節點private Node first;private Node last;private int size;public void add(E element) {//建立節點nodeNode node = new Node(element);//判斷初始節點為空,為空則建立節點if(first==null) {first=node;last=node;}else {//節點:{first last node}//開始情況node.previous=last;node.next=null;//last后移,node變成新的lastlast.next=node;last=node;}size++;}//打印 public String toString() {StringBuilder str=new StringBuilder("[");Node temp=first;while(temp!=null) {str.append(temp.element+",");temp=temp.next;}//將最后的逗號替換成“】”str.setCharAt(str.length()-1, ']');return str.toString(); }public void remove(int index) {SuoYingHeLi(index);Node temp=findNode(index);Node up=temp.previous;Node down=temp.next;if(up!=null) {//判斷是否為空up.next=down;}if(down!=null) {down.previous=up;}if(index==0) {//刪第一個first=down;}if(index==size-1) {//刪最后一個last=up;}size--; }//查找指定位置元素 public E get(int index) {SuoYingHeLi(index);Node temp=findNode(index);return temp!=null?(E)temp.element:null; }//判斷索引是否合理進行封裝 private void SuoYingHeLi(int index) {if(index<0||index>size) {throw new RuntimeException("索引不合法!");} }//查找節點 public Node findNode(int index) {SuoYingHeLi(index);//合理,提高查找效率(二分法)Node temp=null;if(index<=(size>>1)) {//size>>1相當于除于2temp=first;for(int i=0;i<index;i++) {temp=temp.next;}}else {temp=last;for(int j=(size-1);j>index;j--) {temp=temp.previous;}}return temp; }//添加節點 public void add(int index,E element) {SuoYingHeLi(index);Node newNode=new Node(element);Node temp=findNode(index) ;if(temp!=null) {Node up=temp.previous;up.next=newNode;newNode.previous=up;temp.previous=newNode;newNode.next=temp;}if(index==0) {first.previous=newNode;newNode.next=first;first=newNode;}if(index==size-1) {last.next=newNode; newNode.previous=last;last=newNode;} }public static void main(String[] args) {SxtLinkedList<String> list=new SxtLinkedList<>();list.add("a");list.add("b");list.add("c");list.add("d");list.add("e");list.add("f");System.out.println(list);System.out.println(list.get(4));list.remove(4);System.out.println(list);list.add(3, "唐");System.out.println(list); } }

三:畫圖解釋


四:結果顯示

[a,b,c,d,e,f] e [a,b,c,d,f] [a,b,c,唐,d,f]

五:待完善之處

在增加節點add(int index,E element) 方法時,如果在0處添加數據,會拋出異常

總結

以上是生活随笔為你收集整理的链表LinkedList的Java实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。