国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【數(shù)據(jù)結(jié)構(gòu)】每天五分鐘,快速入門數(shù)據(jù)結(jié)構(gòu)(二)——鏈表

這篇具有很好參考價值的文章主要介紹了【數(shù)據(jù)結(jié)構(gòu)】每天五分鐘,快速入門數(shù)據(jù)結(jié)構(gòu)(二)——鏈表。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目錄

一 構(gòu)建一個單向鏈表

二 特點

三 時間復(fù)雜度

四 相關(guān)算法

1.判斷鏈表是否成環(huán)及成環(huán)位置

2.鏈表反轉(zhuǎn)

五 Java中的LinkedList 類

1.使用

2.LinkedList 方法

一 構(gòu)建一個單向鏈表

// 設(shè)計鏈表結(jié)構(gòu)
 class ListNode {
 ? ?int val;
 ? ?ListNode next;
 ? ?ListNode(){}
 ? ?ListNode(int val) {
 ? ? ? ?this.val=val;
 ?  }
}
// 初始化
class MyLinkedList {
 ? ?//size存儲鏈表元素的個數(shù)
 ? ?int size;
 ? ?//虛擬頭結(jié)點
 ? ?ListNode head;
?
 ? ?//初始化鏈表
 ? ?public MyLinkedList() {
 ? ? ? ?size = 0;
 ? ? ? ?head = new ListNode(0);
 ?  }
?
 ? ?//獲取第index個節(jié)點的數(shù)值
 ? ?public int get(int index) {
 ? ? ? ?if (index < 0 || index >= size) {
 ? ? ? ? ? ?return -1;
 ? ? ?  }
 ? ? ? ?ListNode currentNode = head;
 ? ? ? ?for (int i = 0; i <= index; i++) {
 ? ? ? ? ? ?currentNode = currentNode.next;
 ? ? ?  }
 ? ? ? ?return currentNode.val;
 ?  }
?
 ? ?//在鏈表最前面插入一個節(jié)點
 ? ?public void addAtHead(int val) {
 ? ? ? ?addAtIndex(0, val);
 ?  }
?
 ? ?//在鏈表的最后插入一個節(jié)點
 ? ?public void addAtTail(int val) {
 ? ? ? ?addAtIndex(size, val);
 ?  }
?
 ? ?// 在第 index 個節(jié)點之前插入一個新節(jié)點
 ? ?public void addAtIndex(int index, int val) {
 ? ? ? ?if (index > size) {
 ? ? ? ? ? ?return;
 ? ? ?  }
 ? ? ? ?if (index < 0) {
 ? ? ? ? ? ?index = 0;
 ? ? ?  }
 ? ? ? ?size++;
 ? ? ? ?ListNode pred = head;
 ? ? ? ?for (int i = 0; i < index; i++) {
 ? ? ? ? ? ?pred = pred.next;
 ? ? ?  }
 ? ? ? ?ListNode toAdd = new ListNode(val);
 ? ? ? ?toAdd.next = pred.next;
 ? ? ? ?pred.next = toAdd;
 ?  }
?
 ? ?//刪除第index個節(jié)點
 ? ?public void deleteAtIndex(int index) {
 ? ? ? ?if (index < 0 || index >= size) {
 ? ? ? ? ? ?return;
 ? ? ?  }
 ? ? ? ?size--;
 ? ? ? ?if (index == 0) {
 ? ? ? ? ? ?head = head.next;
     ? ?return;
 ? ? ?  }
 ? ? ? ?ListNode pred = head;
 ? ? ? ?for (int i = 0; i < index ; i++) {
 ? ? ? ? ? ?pred = pred.next;
 ? ? ?  }
 ? ? ? ?pred.next = pred.next.next;
 ?  }
}

二 特點

  • 長度無限

  • 適合任意位置插入和刪除頻繁的場景

  • 物理上可以不連續(xù)

三 時間復(fù)雜度

訪問、插入、刪除的時間復(fù)雜度均為O(n)

在頭部插入元素的時間復(fù)雜度為O(1)

四 相關(guān)算法

1.判斷鏈表是否成環(huán)及成環(huán)位置

public ListNode detectCycle(ListNode head) {
 ? ? ? ?// 判斷是否成環(huán):快慢指針相遇
 ? ? ? ?ListNode slow = head;
 ? ? ? ?ListNode fast = head;
 ? ? ? ?while (fast != null && fast.next != null) {
 ? ? ? ? ? ?slow = slow.next;
 ? ? ? ? ? ?fast = fast.next.next;
 ? ? ? ? ? ?if (slow == fast) {// 有環(huán)
 ? ? ? ? ? ? ? ?ListNode index1 = fast; // 相遇節(jié)點
 ? ? ? ? ? ? ? ?ListNode index2 = head; 
 ? ? ? ? ? ? ? ?// 兩個指針,從頭結(jié)點和相遇結(jié)點,各走一步,直到相遇,相遇點即為環(huán)入口
 ? ? ? ? ? ? ? ?while (index1 != index2) {
 ? ? ? ? ? ? ? ? ? ?index1 = index1.next;
 ? ? ? ? ? ? ? ? ? ?index2 = index2.next;
 ? ? ? ? ? ? ?  }
 ? ? ? ? ? ? ? ?return index1;
 ? ? ? ? ?  }
 ? ? ?  }
 ? ? ? ?return null;
 ?  }

2.鏈表反轉(zhuǎn)

 public ListNode reverseList(ListNode head) {
 ? ? ? ?ListNode cur = new ListNode();
 ? ? ? ?ListNode pre = new ListNode();
 ? ? ? ?cur = head;
 ? ? ? ?pre= null; 
 ? ? ? ?while(cur != null ) {
 ? ? ? ? ? ?ListNode temp = new ListNode();
 ? ? ? ? ? ?temp = cur.next;
 ? ? ? ? ? ?cur.next = pre;
 ? ? ? ? ? ?pre = cur;
 ? ? ? ? ? ?cur = temp;
 ? ? ?  }
 ? ? ? ?return pre;
 ?  }

五 Java中的LinkedList 類

LinkedList 繼承了 AbstractSequentialList 類。

LinkedList 實現(xiàn)了 Queue 接口,可作為隊列使用。

LinkedList 實現(xiàn)了 List 接口,可進(jìn)行列表的相關(guān)操作。

LinkedList 實現(xiàn)了 Deque 接口,可作為隊列使用。

LinkedList 實現(xiàn)了 Cloneable 接口,可實現(xiàn)克隆。

LinkedList 實現(xiàn)了 java.io.Serializable 接口,即可支持序列化,能通過序列化去傳輸。

1.使用

LinkedList<String> sites = new LinkedList<String>(); // 創(chuàng)建鏈表
sites.add("Google"); // 添加元素
sites.add("Runoob");
sites.add("Taobao");
sites.add("Weibo");
System.out.println(sites); // 打印輸出鏈表中的元素
sites.addFirst("Wiki"); // 在鏈表頭部添加元素
sites.addLast("Wiki");// 在鏈表尾部添加元素
sites.removeFirst();// 在鏈表頭部刪除元素
sites.removeLast();// 刪除鏈表尾部元素
System.out.println(sites.getFirst());// 獲取鏈表首個元素
System.out.println(sites.getLast());// 獲取鏈表最后一個元素
sites.get(i)// 獲取任意位置元素

2.LinkedList 方法

【數(shù)據(jù)結(jié)構(gòu)】每天五分鐘,快速入門數(shù)據(jù)結(jié)構(gòu)(二)——鏈表,數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)結(jié)構(gòu),鏈表,算法文章來源地址http://www.zghlxwxcb.cn/news/detail-834254.html

到了這里,關(guān)于【數(shù)據(jù)結(jié)構(gòu)】每天五分鐘,快速入門數(shù)據(jù)結(jié)構(gòu)(二)——鏈表的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 數(shù)據(jù)結(jié)構(gòu)入門 — 鏈表詳解_單鏈表

    數(shù)據(jù)結(jié)構(gòu)入門 — 鏈表詳解_單鏈表

    數(shù)據(jù)結(jié)構(gòu)入門 — 單鏈表詳解 * 博客主頁鏈接:https://blog.csdn.net/m0_74014525 關(guān)注博主,后期持續(xù)更新系列文章 文章末尾有源碼 *****感謝觀看,希望對你有所幫助***** 第一篇:數(shù)據(jù)結(jié)構(gòu)入門 — 鏈表詳解_單鏈表 第二篇:數(shù)據(jù)結(jié)構(gòu)入門 — 鏈表詳解_雙向鏈表 第三篇:數(shù)據(jù)結(jié)構(gòu)入門

    2024年02月11日
    瀏覽(83)
  • 數(shù)據(jù)結(jié)構(gòu)入門指南:鏈表(新手避坑指南)

    數(shù)據(jù)結(jié)構(gòu)入門指南:鏈表(新手避坑指南)

    目錄 前言 1.鏈表 1.1鏈表的概念 ?1.2鏈表的分類 1.2.1單向或雙向 1.2.2.帶頭或者不帶頭 1.2.33. 循環(huán)或者非循環(huán) 1.3鏈表的實現(xiàn) ?定義鏈表 總結(jié) ????????前邊我們學(xué)習(xí)了順序表,順序表是數(shù)據(jù)結(jié)構(gòu)中最簡單的一種線性數(shù)據(jù)結(jié)構(gòu),今天我們來學(xué)習(xí)鏈表,難度相較于順序表會大幅增

    2024年02月15日
    瀏覽(30)
  • 【數(shù)據(jù)結(jié)構(gòu)】數(shù)組(稀疏矩陣、特殊矩陣壓縮、矩陣存儲、稀疏矩陣的快速轉(zhuǎn)置、十字鏈表)

    【數(shù)據(jù)結(jié)構(gòu)】數(shù)組(稀疏矩陣、特殊矩陣壓縮、矩陣存儲、稀疏矩陣的快速轉(zhuǎn)置、十字鏈表)

    前幾期期鏈接: 【數(shù)據(jù)結(jié)構(gòu)】棧與隊列的概念和基本操作代碼實現(xiàn) 【數(shù)據(jù)結(jié)構(gòu)】樹與二叉樹的概念與基本操作代碼實現(xiàn) k維數(shù)組的定義: k 維數(shù)組 D = { a j 1 , j 2 , . . . , j k } k維數(shù)組D={ a_{j_1, j_2, ..., j_k} } k 維數(shù)組 D = { a j 1 ? , j 2 ? , ... , j k ? ? } k 0 稱為數(shù)組的維數(shù),

    2024年04月09日
    瀏覽(37)
  • 【數(shù)據(jù)結(jié)構(gòu) | 入門】線性表與鏈表 (問題引入&實現(xiàn)&算法優(yōu)化)

    【數(shù)據(jù)結(jié)構(gòu) | 入門】線性表與鏈表 (問題引入&實現(xiàn)&算法優(yōu)化)

    ???♂? 個人主頁: @計算機(jī)魔術(shù)師 ????? 作者簡介:CSDN內(nèi)容合伙人,全棧領(lǐng)域優(yōu)質(zhì)創(chuàng)作者。 本文是浙大數(shù)據(jù)結(jié)構(gòu)學(xué)習(xí)筆記專欄 這里我們引入一個問題,最常見的多項式,我們?nèi)绾问褂镁幊虒⒍囗検奖硎境鰜砟兀?我們可以使用數(shù)組來表示,但是會隨著一個問題,如下圖底

    2024年01月21日
    瀏覽(129)
  • 從0開始學(xué)C++ 第二十七課 數(shù)據(jù)結(jié)構(gòu)入門 - 數(shù)組與鏈表

    第二十七課:數(shù)據(jù)結(jié)構(gòu)入門 - 數(shù)組與鏈表 學(xué)習(xí)目標(biāo): 理解數(shù)組的基本概念和操作。 掌握鏈表的基本結(jié)構(gòu)與特點。 學(xué)會在C++中定義和操作數(shù)組和鏈表。 了解數(shù)組和鏈表的基本使用場景。 學(xué)習(xí)內(nèi)容: 數(shù)組(Array) 概念:數(shù)組是一種線性數(shù)據(jù)結(jié)構(gòu),用一段連續(xù)的內(nèi)存空間來存儲

    2024年01月23日
    瀏覽(47)
  • 數(shù)據(jù)結(jié)構(gòu)入門(C語言版)線性表中鏈表介紹及無頭單向非循環(huán)鏈表接口實現(xiàn)

    數(shù)據(jù)結(jié)構(gòu)入門(C語言版)線性表中鏈表介紹及無頭單向非循環(huán)鏈表接口實現(xiàn)

    概念 : 線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu)的特點是用一組任意的存儲單元存儲線性表的數(shù)據(jù)元素 。因此,為了表示每個數(shù)據(jù)元素與其直接后繼數(shù)據(jù)元素之間的邏輯關(guān)系,對數(shù)據(jù)元素來說,除了存儲其本身的信息之外,還需存儲一個指示其直接后繼的信息(即直接后繼的存儲位置)。這

    2023年04月09日
    瀏覽(31)
  • 數(shù)據(jù)結(jié)構(gòu)-鏈表結(jié)構(gòu)-雙向鏈表

    數(shù)據(jù)結(jié)構(gòu)-鏈表結(jié)構(gòu)-雙向鏈表

    雙向鏈表也叫雙鏈表,與單向鏈表不同的是,每一個節(jié)點有三個區(qū)域組成:兩個指針域,一個數(shù)據(jù)域 前一個指針域:存儲前驅(qū)節(jié)點的內(nèi)存地址 后一個指針域:存儲后繼節(jié)點的內(nèi)存地址 數(shù)據(jù)域:存儲節(jié)點數(shù)據(jù) 以下就是雙向鏈表的最基本單位 節(jié)點的前指針域指向前驅(qū),后指針

    2024年02月04日
    瀏覽(30)
  • <數(shù)據(jù)結(jié)構(gòu)> 鏈表 - 鏈表的概念及結(jié)構(gòu)

    <數(shù)據(jù)結(jié)構(gòu)> 鏈表 - 鏈表的概念及結(jié)構(gòu)

    概念: 鏈表是一種物理存儲結(jié)構(gòu)上非連續(xù)、非順序的存儲結(jié)構(gòu),數(shù)據(jù)元素的 邏輯順序 是通過鏈表中的 指針鏈接 次序?qū)崿F(xiàn)的 1、鏈表由一系列結(jié)點(鏈表中每一個元素稱為結(jié)點)組成。 2、結(jié)點可以在運(yùn)行時動態(tài)(malloc)生成。 3、每個結(jié)點包括兩個部分:一個是存儲數(shù)據(jù)元素的

    2023年04月09日
    瀏覽(52)
  • 【數(shù)據(jù)結(jié)構(gòu)-鏈表-01】反轉(zhuǎn)鏈表

    【數(shù)據(jù)結(jié)構(gòu)-鏈表-01】反轉(zhuǎn)鏈表

    ??????歡迎來到我的博客,很高興能夠在這里和您見面!希望您在這里可以感受到一份輕松愉快的氛圍,不僅可以獲得有趣的內(nèi)容和知識,也可以暢所欲言、分享您的想法和見解。 推薦:kuan 的首頁,持續(xù)學(xué)習(xí),不斷總結(jié),共同進(jìn)步,活到老學(xué)到老 導(dǎo)航 檀越劍指大廠系列:全面總

    2024年02月10日
    瀏覽(27)
  • 數(shù)據(jù)結(jié)構(gòu)——線性數(shù)據(jù)結(jié)構(gòu)(數(shù)組,鏈表,棧,隊列)

    數(shù)據(jù)結(jié)構(gòu)——線性數(shù)據(jù)結(jié)構(gòu)(數(shù)組,鏈表,棧,隊列)

    數(shù)組(Array) 是一種很常見的數(shù)據(jù)結(jié)構(gòu)。它由相同類型的元素(element)組成,并且是使用一塊連續(xù)的內(nèi)存來存儲。 我們直接可以利用元素的索引(index)可以計算出該元素對應(yīng)的存儲地址。 數(shù)組的特點是: 提供隨機(jī)訪問 并且容量有限。 2.1. 鏈表簡介 鏈表(LinkedList) 雖然是

    2024年02月11日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包