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

歡迎訪問 生活随笔!

生活随笔

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

java

【Java数据结构】链表的增、删、返回指定位置元素(添加泛型)

發布時間:2024/2/28 java 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Java数据结构】链表的增、删、返回指定位置元素(添加泛型) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

修改變量名稱的小技巧

想要修改多個相同的變量名稱,選中想要改名的變量,按alt+shift+R重構,可以一次更改多個相同變量名稱

代碼

Node.java

package cn.hanquan.test;public class Node {Node pre;Node next;Object element;// 構造器public Node(Node pre, Node next, Object element){super();this.pre = pre;this.next = next;this.element = element;}public Node(Object obj){this.element = obj;}public Node(){} }

MyLinkList.java

package cn.hanquan.test;//一個鏈表類 public class MyLinkList<E> // 泛型 {private Node first;private Node last;public int size;// 增public void add(E element)// 選中想要改名的變量 按alt+shift+R重構 可以一次更改所有相同變量名稱{Node node = new Node(element);if (first == null)// 空{node.pre = null;node.next = null;first = node;last = node;}else// 非空{node.pre = last;node.next = null;last.next = node;last = node;}size++;}// 順序打印public String toString(){StringBuilder ret = new StringBuilder("[");Node cur = new Node();cur = first;if (cur == null)ret.append("]");// 鏈表為空while (cur != null){ret.append(cur.element.toString());if (cur.next != null)ret.append(", ");elseret.append("]");cur = cur.next;}return ret.toString();}// 逆序打印public String toStringBack(){StringBuilder ret = new StringBuilder("[");Node cur = new Node();cur = last;if (cur == null)ret.append("]");// 鏈表為空while (cur != null){ret.append(cur.element.toString());if (cur.pre != null)ret.append(", ");elseret.append("]");cur = cur.pre;}return ret.toString();}// 找位置public Node findCur(int index){Node cur = new Node();cur = null;if (index > size && size != 0 || index < 0){System.out.println("索引數字不合法:" + index + "/" + size);}else// 順序查找{cur = first;for (int i = 0; i < index; i++){cur = cur.next;}}return cur;}// 返回index位置元素public E get(int index){Node cur = findCur(index);return cur == null ? null : (E) cur.element;}// 刪public void remove(int index){// 找位置Node cur = new Node();cur = findCur(index);if (first == null)// 鏈表為空{System.out.println("鏈表為空,無法刪除~");}else if (first == last)// 只有一個節點{last = first = null;}else if (cur == first) // 刪除頭節點{first = cur.next; // 新的頭節點指向新的頭cur.next.pre = null; // 新的頭前驅為null}else if (cur == last) // 刪除尾節點{last = cur.pre;// 新的尾節點指向新的尾cur.pre.next = null;// 新的尾后繼為null}else // 刪除中間節點{cur.pre.next = cur.next;cur.next.pre = cur.pre;}size--;}// 指定位置插入public void add(int index, E element){// 找位置Node cur = new Node();cur = findCur(index);// 插入Node node = new Node(element);if (first == null)// 空{node.pre = null;node.next = null;first = node;last = node;}else if (cur == first)// 頭{node.pre = null;node.next = first;first.pre = node;first = node;}else if (cur == last)// 尾{node.next = null;node.pre = last;last.next = node;last = node;}else // 中{cur.pre.next = node;node.pre = cur.pre;node.next = cur;cur.pre = node;}size++;} }

Main.java

package cn.hanquan.test;public class Main {public static void main(String[] args){MyLinkList<String> myLinkList = new MyLinkList<String>();// 增加了泛型的鏈表for (int i = 0; i < 20; i++){myLinkList.add("節點" + i);}/*----------------------------------以下全部用于測試----------------------------------*/// 獲取元素并打印System.out.println(myLinkList.toString());for (int i = 0; i + 5 < myLinkList.size; i += 5){System.out.println("位置為" + i + "的元素是" + myLinkList.get(i));}// 刪除元素for (int i = 0; i < 8; i++){System.out.println("刪除前:" + myLinkList.toString());myLinkList.remove(0);System.out.println("刪除后:" + myLinkList.toString() + "\n");System.out.println("逆序:" + myLinkList.toStringBack() + "\n");}// 插入元素myLinkList.add(5, "插" + 5);System.out.println("插入位置" + 5 + myLinkList.toString() + "\n");System.out.println("逆序:" + myLinkList.toStringBack() + "\n");/*----------------------------------以上全部用于測試----------------------------------*/} }

運行結果

[節點0, 節點1, 節點2, 節點3, 節點4, 節點5, 節點6, 節點7, 節點8, 節點9, 節點10, 節點11, 節點12, 節點13, 節點14, 節點15, 節點16, 節點17, 節點18, 節點19] 位置為0的元素是節點0 位置為5的元素是節點5 位置為10的元素是節點10 刪除前:[節點0, 節點1, 節點2, 節點3, 節點4, 節點5, 節點6, 節點7, 節點8, 節點9, 節點10, 節點11, 節點12, 節點13, 節點14, 節點15, 節點16, 節點17, 節點18, 節點19] 刪除后:[節點1, 節點2, 節點3, 節點4, 節點5, 節點6, 節點7, 節點8, 節點9, 節點10, 節點11, 節點12, 節點13, 節點14, 節點15, 節點16, 節點17, 節點18, 節點19]逆序:[節點19, 節點18, 節點17, 節點16, 節點15, 節點14, 節點13, 節點12, 節點11, 節點10, 節點9, 節點8, 節點7, 節點6, 節點5, 節點4, 節點3, 節點2, 節點1]刪除前:[節點1, 節點2, 節點3, 節點4, 節點5, 節點6, 節點7, 節點8, 節點9, 節點10, 節點11, 節點12, 節點13, 節點14, 節點15, 節點16, 節點17, 節點18, 節點19] 刪除后:[節點2, 節點3, 節點4, 節點5, 節點6, 節點7, 節點8, 節點9, 節點10, 節點11, 節點12, 節點13, 節點14, 節點15, 節點16, 節點17, 節點18, 節點19]逆序:[節點19, 節點18, 節點17, 節點16, 節點15, 節點14, 節點13, 節點12, 節點11, 節點10, 節點9, 節點8, 節點7, 節點6, 節點5, 節點4, 節點3, 節點2]刪除前:[節點2, 節點3, 節點4, 節點5, 節點6, 節點7, 節點8, 節點9, 節點10, 節點11, 節點12, 節點13, 節點14, 節點15, 節點16, 節點17, 節點18, 節點19] 刪除后:[節點3, 節點4, 節點5, 節點6, 節點7, 節點8, 節點9, 節點10, 節點11, 節點12, 節點13, 節點14, 節點15, 節點16, 節點17, 節點18, 節點19]逆序:[節點19, 節點18, 節點17, 節點16, 節點15, 節點14, 節點13, 節點12, 節點11, 節點10, 節點9, 節點8, 節點7, 節點6, 節點5, 節點4, 節點3]刪除前:[節點3, 節點4, 節點5, 節點6, 節點7, 節點8, 節點9, 節點10, 節點11, 節點12, 節點13, 節點14, 節點15, 節點16, 節點17, 節點18, 節點19] 刪除后:[節點4, 節點5, 節點6, 節點7, 節點8, 節點9, 節點10, 節點11, 節點12, 節點13, 節點14, 節點15, 節點16, 節點17, 節點18, 節點19]逆序:[節點19, 節點18, 節點17, 節點16, 節點15, 節點14, 節點13, 節點12, 節點11, 節點10, 節點9, 節點8, 節點7, 節點6, 節點5, 節點4]刪除前:[節點4, 節點5, 節點6, 節點7, 節點8, 節點9, 節點10, 節點11, 節點12, 節點13, 節點14, 節點15, 節點16, 節點17, 節點18, 節點19] 刪除后:[節點5, 節點6, 節點7, 節點8, 節點9, 節點10, 節點11, 節點12, 節點13, 節點14, 節點15, 節點16, 節點17, 節點18, 節點19]逆序:[節點19, 節點18, 節點17, 節點16, 節點15, 節點14, 節點13, 節點12, 節點11, 節點10, 節點9, 節點8, 節點7, 節點6, 節點5]刪除前:[節點5, 節點6, 節點7, 節點8, 節點9, 節點10, 節點11, 節點12, 節點13, 節點14, 節點15, 節點16, 節點17, 節點18, 節點19] 刪除后:[節點6, 節點7, 節點8, 節點9, 節點10, 節點11, 節點12, 節點13, 節點14, 節點15, 節點16, 節點17, 節點18, 節點19]逆序:[節點19, 節點18, 節點17, 節點16, 節點15, 節點14, 節點13, 節點12, 節點11, 節點10, 節點9, 節點8, 節點7, 節點6]刪除前:[節點6, 節點7, 節點8, 節點9, 節點10, 節點11, 節點12, 節點13, 節點14, 節點15, 節點16, 節點17, 節點18, 節點19] 刪除后:[節點7, 節點8, 節點9, 節點10, 節點11, 節點12, 節點13, 節點14, 節點15, 節點16, 節點17, 節點18, 節點19]逆序:[節點19, 節點18, 節點17, 節點16, 節點15, 節點14, 節點13, 節點12, 節點11, 節點10, 節點9, 節點8, 節點7]刪除前:[節點7, 節點8, 節點9, 節點10, 節點11, 節點12, 節點13, 節點14, 節點15, 節點16, 節點17, 節點18, 節點19] 刪除后:[節點8, 節點9, 節點10, 節點11, 節點12, 節點13, 節點14, 節點15, 節點16, 節點17, 節點18, 節點19]逆序:[節點19, 節點18, 節點17, 節點16, 節點15, 節點14, 節點13, 節點12, 節點11, 節點10, 節點9, 節點8]插入位置5[節點8, 節點9, 節點10, 節點11, 節點12, 插5, 節點13, 節點14, 節點15, 節點16, 節點17, 節點18, 節點19]逆序:[節點19, 節點18, 節點17, 節點16, 節點15, 節點14, 節點13, 插5, 節點12, 節點11, 節點10, 節點9, 節點8]

總結

以上是生活随笔為你收集整理的【Java数据结构】链表的增、删、返回指定位置元素(添加泛型)的全部內容,希望文章能夠幫你解決所遇到的問題。

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