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

歡迎訪問 生活随笔!

生活随笔

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

java

Java中单链表的实现

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

注釋比較詳細,直接上代碼!

package XiaoMi;import java.util.HashSet; import java.util.Set;public class SingleLinkList {//節點class Element { //自定義數據結構public Object value = null; //元素屬性public Element nextNode = null; //元素指針}//節點內容class Value {public String code;public String name;public Value() {}public Value(String code, String name) {this.code = code;this.name = name;}@Overridepublic String toString() {return code + "-" + name;}}//鏈表頭節點private Element header = null; //引用public static void main(String[] args) {SingleLinkList list = new SingleLinkList();Value value1 = list.new Value("1", "java");Value value2 = list.new Value("2", "c++");Value value3 = list.new Value("3", "c#");Value value4 = list.new Value("4", "vb");list.add(value1);list.add(value2);list.add(value3);list.add(value4);System.out.println("remove vb ?" + list.remove(value4));System.out.println("have c++ ?" + list.contains(value2));System.out.println("have vb ?" + list.contains(value4));System.out.println("list is emptry ? " + list.isEmpty());System.out.println(list);list.clear();System.out.println("list is emptry ? " + list.isEmpty());}//添加一個節點public void add(Object node) {if (header == null) { //若為空,創建鏈表頭header = new Element();header.value = null;header.nextNode = null;}Element element = new Element(); //把鏈表頭給加上element.value = node;element.nextNode = header.nextNode;header.nextNode = element;}//清空鏈表public void clear() {header = null;}//是否包含某個元素public boolean contains(Object o) {if (header == null)return false;Element eqEl = header.nextNode;while (eqEl != null) {if (eqEl.value == o) {return true;}eqEl = eqEl.nextNode;}return false;}//重寫toString方法,拼接字符串public String toString() {int size = this.size();String print = "";if (size == 0)return print;for (int i = 0; i < size; i++) {print = "," + this.get(i) + print;}print = "[" + print.substring(1) + "]";return print;}//取第i個元素public Object get(int index) {if (header == null)return null;int size = this.size();if (index > (size - 1) || index < 0) {return null;}Element temp = header.nextNode;int i = 0;while (temp != null) {if (index == i) {return temp.value;}i++;temp = temp.nextNode;}return null;}//返回第i個節點元素private Element getElement(int index) {if (header == null)return null;int size = this.size();if (index > (size - 1) || index < 0) {return null;}Element temp = header.nextNode;int i = 0;while (temp != null) {if (index == i) {return temp;}i++;temp = temp.nextNode;}return null;}//鏈表是否為空public boolean isEmpty() {if (header == null)return true;elsereturn false;}//刪除一個節點public boolean remove(Object o) {if (header == null)return false;Element eqPreEl = header;Element eqEl = header.nextNode;while (eqEl != null) {if (eqEl.value == o) {eqPreEl.nextNode = eqEl.nextNode; //指向它的下一個節點return true;}eqPreEl = eqEl; //指針向后移動eqEl = eqEl.nextNode;}return false;}//鏈表的長度public int size() {if (header == null)return 0;Element temp = header.nextNode;int i = 0;while (temp != null) {i++;temp = temp.nextNode;}return i;}/*** 檢查環狀單鏈表* * @return*/public boolean checkLoop() {if (header == null)return false;int size = this.size();if (size == 0)return false;Set<Element> set = new HashSet<Element>();for (int i = 0; i < size; i++) {Element el = getElement(i);if (!set.contains(el)) {set.add(el);}if (set.contains(el.nextNode)) { //如果和set中已有節點重復,則認為有環return true;}}return false;} }

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

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

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