成人视屏在线观看-国产99精品-国产精品1区2区-欧美一级在线观看-国产一区二区日韩-色九九九

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

java實(shí)現(xiàn)簡(jiǎn)單單鏈表

瀏覽:4日期:2022-08-16 10:45:23

本文實(shí)例為大家分享了java實(shí)現(xiàn)簡(jiǎn)單單鏈表的具體代碼,供大家參考,具體內(nèi)容如下

一、定義:

單鏈表是一種鏈?zhǔn)酱嫒〉臄?shù)據(jù)結(jié)構(gòu),用一組地址任意的存儲(chǔ)單元存放線性表中的數(shù)據(jù)元素。鏈表中的數(shù)據(jù)是以結(jié)點(diǎn)來(lái)表示的,每個(gè)結(jié)點(diǎn)的構(gòu)成:元素(數(shù)據(jù)元素的映象) + 指針(相當(dāng)于JAVA中的引用,指示后繼元素存儲(chǔ)位置,),元素就是存儲(chǔ)數(shù)據(jù)的存儲(chǔ)單元,指針就是連接每個(gè)結(jié)點(diǎn)的地址數(shù)據(jù)。

二、結(jié)構(gòu):

java實(shí)現(xiàn)簡(jiǎn)單單鏈表

如圖所示,data就是當(dāng)前節(jié)點(diǎn)的數(shù)據(jù),next是指針,指針存放的是內(nèi)存地址,是當(dāng)前結(jié)點(diǎn)的下一結(jié)點(diǎn)內(nèi)存地址,順著這個(gè)地址就能找到下一個(gè)結(jié)點(diǎn)。

三、代碼實(shí)現(xiàn):

package com.example.demo.linkedlist; /** * 結(jié)點(diǎn) * Created by xinan on 2021/02/23 */public class Node { public Integer value; public Node next; public Node(Integer value) { this.value = value; } public Node(Integer value, Node next) { this.value = value; this.next = next; } public Integer getValue() { return value; } public void setValue(Integer value) { this.value = value; } public Node getNext() { return next; } public void setNext(Node next) { this.next = next; } }

package com.example.demo.linkedlist; /** * 單鏈表 * Created by xinan on 2021/2/23 */public class SingleLinkedList { public Node head; /** * 從頭部添加 * @param data 待添加數(shù)據(jù) */ public void addHead(Integer data) { Node node = new Node(data); node.next = head; head = node; } /** * 從尾部添加 * @param data 待添加數(shù)據(jù) */ public void addLast(Integer data) { Node node = new Node(data); if (head == null) { head = node; return; } Node temp = head; while (temp.next != null) { temp = temp.next; } temp.next = node; } /** * 獲取鏈表的長(zhǎng)度 * @return 鏈表長(zhǎng)度 */ public Integer length() { int length = 0; Node temp = head; while (temp != null) { temp = temp.next; length ++; } return length; } /** * 從指定下標(biāo)處添加 * @param index 指定下標(biāo) * @param data 待添加的數(shù)據(jù) */ public void addByIndex(int index, Integer data) { if (index < 0 || index > length()) { System.out.println('插入下標(biāo)不合規(guī),請(qǐng)檢查!'); return; } if (index == 0) { addHead(data); return; } Node node = new Node(data); Node temp = head; for (int i = 1; i < index; i++) { temp = temp.next; } node.next = temp.next; temp.next = node; } /** * 指定下標(biāo)刪除 * @param index 指定下標(biāo) */ public void deleteByIndex(int index) { if (index < 0 || index > length()) { System.out.println('刪除下標(biāo)不合規(guī),請(qǐng)檢查!'); return; } if (index == 0) { head = head.next; return; } Node temp = head; for (int i = 1; i < index; i++) { temp = temp.next; } temp.next = temp.next.next; } /** * 通過(guò)下標(biāo)獲取結(jié)點(diǎn) * @param index 下標(biāo) * @return 結(jié)點(diǎn) */ public Node getByIndex(Integer index) { if (index < 0 || index > length() - 1) { System.out.println('不存在此下標(biāo)結(jié)點(diǎn)'); } Node temp = head; int i = 0; while (temp != null) { if (i == index) {return temp; } i ++; temp = temp.next; } return null; } /** * 打印鏈表值 */ public void printLink() { Node temp = head; while (temp != null) { System.out.println(temp.value); temp = temp.next; } } /** * 打印某個(gè)節(jié)點(diǎn)之后的所有值 * @param node */ public static void printAfterNode(Node node) { while (node != null) { System.out.println(node.value); node = node.next; } } /** * 清除單鏈表 */ public void clearLink() { head = null; } /** * 單鏈表反轉(zhuǎn) * @param head 頭節(jié)點(diǎn) */ public Node reverseLink(Node head) { Node prev = null; Node curr = head; while (curr != null) { Node nextTemp = curr.next; curr.next = prev; prev = curr; curr = nextTemp; } return prev; } /** * 測(cè)試 * @param args */ public static void main(String[] args) { SingleLinkedList linkNode = new SingleLinkedList(); linkNode.addHead(2); linkNode.addHead(3); linkNode.addHead(5); linkNode.addLast(9); linkNode.addLast(7); System.out.println('打印單鏈表: '); linkNode.printLink(); Node byIndex1 = linkNode.getByIndex(0); System.out.println('獲取下標(biāo)為1的結(jié)點(diǎn)值: ' + byIndex1.value); linkNode.addByIndex(2, 8); System.out.println('下標(biāo)2添加后打印單鏈表: '); linkNode.printLink(); linkNode.addByIndex(0, 11); System.out.println('下標(biāo)0添加后打印單鏈表: '); linkNode.printLink(); linkNode.deleteByIndex(0); System.out.println('下標(biāo)0刪除后打印單鏈表: '); linkNode.printLink(); Node node = linkNode.reverseLink(linkNode.head); System.out.println('反轉(zhuǎn)后打印單鏈表: '); printAfterNode(node); } }

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Java
相關(guān)文章:
主站蜘蛛池模板: 久久全国免费久久青青小草 | 日本三片在在线播放 | 日韩中文字幕一在线 | 在线观看国产情趣免费视频 | 欧美一级特黄真人毛片 | 黄色网址免费在线 | 视频二区 中文字幕 欧美 | 亚洲欧美视频一区二区 | 狠狠综合久久久久综合 | 日本护士视频xxxxxwww | 亚洲精品国产成人专区 | 一区二区三区视频在线 | 国产超薄肉色丝袜足j | 国产精品九九视频 | 午夜亚洲国产成人不卡在线 | 国产一级做a爰片久久毛片 国产一级做a爰片久久毛片99 | 男人女人做刺激视频免费 | 精品国产区一区二区三区在线观看 | 国产在线视频网址 | 色拍拍噜噜噜aⅴ在线观看 色青青草原桃花久久综合 色婷婷91 | 香蕉依依精品视频在线播放 | 欧美成人三级网站在线观看 | 玖玖爱精品 | 美女脱了内裤张开腿让男人桶网站 | 亚洲视频网址 | 亚洲欧美一区二区三区国产精品 | 久久美女精品国产精品亚洲 | 欧美在线一区二区三区欧美 | 黄色美女网站在线观看 | 大学生久久香蕉国产线观看 | 国产午夜精品久久久久免费视 | 成人看的午夜免费毛片 | 国产成人三级经典中文 | 精品爱爱 | 国产精品成人观看视频国产 | 亚洲精品天堂一区 | 高清精品女厕在线观看 | 99免费在线观看 | 成人aaaa | 国产在线极品 | 精品一久久 |