最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2023年04月03日 16:11:33   作者:徐徐同學(xué)  
這篇文章主要介紹了數(shù)據(jù)鏈表的概念及結(jié)構(gòu),鏈表是一種物理存儲(chǔ)結(jié)構(gòu)上非連續(xù)、非順序的存儲(chǔ)結(jié)構(gòu),數(shù)據(jù)元素的邏輯順序是通過(guò)鏈表中的指針鏈接次序?qū)崿F(xiàn)的。想進(jìn)一步了解的同學(xué),可以參考閱讀本文

1、鏈表的概念

概念:鏈表是一種物理存儲(chǔ)結(jié)構(gòu)上非連續(xù)、非順序的存儲(chǔ)結(jié)構(gòu),數(shù)據(jù)元素的邏輯順序是通過(guò)鏈表中的指針鏈接次序?qū)崿F(xiàn)的

1、鏈表由一系列結(jié)點(diǎn)(鏈表中每一個(gè)元素稱為結(jié)點(diǎn))組成。

2、結(jié)點(diǎn)可以在運(yùn)行時(shí)動(dòng)態(tài)(malloc)生成。

3、每個(gè)結(jié)點(diǎn)包括兩個(gè)部分:一個(gè)是存儲(chǔ)數(shù)據(jù)元素的數(shù)據(jù)域,另一個(gè)是存儲(chǔ)下一個(gè)結(jié)點(diǎn)地址的指針域(詳見(jiàn)1.2 節(jié)點(diǎn)部分)。

4、相比于線性表順序結(jié)構(gòu),鏈表操作復(fù)雜。但是由于不需按順序存儲(chǔ),鏈表在插入的時(shí)候可以達(dá)到O(1)的復(fù)雜度,比順序表快得多;但是查找一個(gè)節(jié)點(diǎn)或者訪問(wèn)特定編號(hào)的節(jié)點(diǎn)則需要O(n)的時(shí)間,而順序表只需O(1)

2、結(jié)點(diǎn)

鏈表由一個(gè)個(gè)結(jié)點(diǎn)構(gòu)成,每個(gè)結(jié)點(diǎn)采用結(jié)構(gòu)體的形式。結(jié)構(gòu)體內(nèi)前面的變量按照需要給予,最后一個(gè)變量是這個(gè)結(jié)構(gòu)體類型的指針,用來(lái)存放下一節(jié)點(diǎn)的首地址‘

鏈表結(jié)點(diǎn)分為兩個(gè)域
數(shù)據(jù)域 :存放各種實(shí)際的數(shù)據(jù)
指針域 :存放下一結(jié)點(diǎn)的地址

(圖為帶哨兵位頭結(jié)點(diǎn)的鏈表)

3、鏈表的使用場(chǎng)景

線性表在 需要經(jīng)常插入或刪除數(shù)據(jù)元素 的情況下適合采用鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)。

因?yàn)閷?duì)于鏈表來(lái)說(shuō),插入或刪除數(shù)據(jù)只需要?jiǎng)?chuàng)建一個(gè)結(jié)點(diǎn)、輸入數(shù)據(jù)、修改指針把該結(jié)點(diǎn)連接到鏈表中的某一位置即可; 而對(duì)于順序表,插入一個(gè)數(shù)據(jù)可能需要搬移其他數(shù)據(jù),復(fù)雜度高。

4、鏈表分類和常用結(jié)構(gòu)

雖然組合起來(lái)一共有8種鏈表可以選擇,但是實(shí)際中最常用的主要還是 無(wú)頭單向非循環(huán) 鏈表和 帶頭雙向循環(huán) 鏈表。

1、無(wú)頭單向非循環(huán)鏈表:俗稱 “單鏈表”。結(jié)構(gòu)簡(jiǎn)單,一般不會(huì)單獨(dú)用來(lái)存儲(chǔ)數(shù)據(jù)。實(shí)際上更多是作為其他數(shù)據(jù)結(jié)構(gòu)的子結(jié)構(gòu)(如哈希桶、圖的鄰接表、棧的鏈?zhǔn)浇Y(jié)構(gòu)等)

2、帶頭雙向循環(huán)鏈表:結(jié)構(gòu)最復(fù)雜,一般用來(lái)單獨(dú)存儲(chǔ)數(shù)據(jù)。實(shí)際使用的鏈表,大多都是帶頭雙向循環(huán)鏈表。雖然結(jié)構(gòu)最復(fù)雜,但是這種結(jié)構(gòu)會(huì)帶來(lái)很多優(yōu)勢(shì)。

5、與順序表的比較

鏈表: 鏈表是通過(guò)結(jié)點(diǎn)把離散的數(shù)據(jù)鏈接成一個(gè)表,通過(guò)對(duì)結(jié)點(diǎn)的插入、刪除操作從而實(shí)現(xiàn)對(duì)數(shù)據(jù)的存取。

順序表: 順序表是通過(guò)開(kāi)辟一段連續(xù)的內(nèi)存(直接使用 數(shù)組 或者 malloc后realloc擴(kuò)容)來(lái)存儲(chǔ)數(shù)據(jù)。

但是由于 realloc 擴(kuò)容分為原地?cái)U(kuò)容和異地?cái)U(kuò)容,前者代價(jià)較低,而后者擴(kuò)容時(shí)不僅需要拷貝數(shù)據(jù),還要釋放舊空間。再者,擴(kuò)容時(shí)一般會(huì)擴(kuò)到原來(lái)容量的2倍,擴(kuò)容次數(shù)多了就容易造成空間的浪費(fèi)

順序表的每個(gè)成員對(duì)應(yīng)鏈表的結(jié)點(diǎn);成員和結(jié)點(diǎn)的數(shù)據(jù)類型可以是標(biāo)準(zhǔn)的c類型或者是用戶自定義的結(jié)構(gòu)體類型。

比較對(duì)象順序表鏈表
存儲(chǔ)空間連續(xù)不連續(xù)
插入或刪除數(shù)據(jù)可能要搬移數(shù)據(jù),復(fù)雜度O(n)只需修改指針
push動(dòng)態(tài)順序表:空間不夠了需要擴(kuò)容沒(méi)有“容量”的概念,push時(shí)直接malloc新的結(jié)點(diǎn)
應(yīng)用需要頻繁訪問(wèn)需要頻繁插入、刪除數(shù)據(jù)

 到此這篇關(guān)于Java數(shù)據(jù)結(jié)構(gòu)之鏈表的概念及結(jié)構(gòu)的文章就介紹到這了,更多相關(guān)Java 鏈表的概念結(jié)構(gòu)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 教你創(chuàng)建springcloud微服務(wù)的基礎(chǔ)子服務(wù)的超詳細(xì)過(guò)程

    教你創(chuàng)建springcloud微服務(wù)的基礎(chǔ)子服務(wù)的超詳細(xì)過(guò)程

    這篇文章主要介紹了創(chuàng)建springcloud微服務(wù)的基礎(chǔ)子服務(wù),主要是創(chuàng)建兩個(gè)springboot服務(wù),在教程中增加springcloud相關(guān)組件,本文分步驟給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-04-04
  • SpringBoot整合RabbitMQ示例詳解

    SpringBoot整合RabbitMQ示例詳解

    這篇文章主要介紹了SpringBoot整合RabbitMQ示例詳解,RabbitMQ是一個(gè)實(shí)現(xiàn)了AMQP高級(jí)消息隊(duì)列協(xié)議的消息隊(duì)列服務(wù),用Erlang語(yǔ)言。是面向消息的中間件,需要的朋友可以參考下
    2023-07-07
  • java語(yǔ)言描述Redis分布式鎖的正確實(shí)現(xiàn)方式

    java語(yǔ)言描述Redis分布式鎖的正確實(shí)現(xiàn)方式

    這篇文章主要介紹了java語(yǔ)言描述Redis分布式鎖的正確實(shí)現(xiàn)方式,具有一定借鑒價(jià)值,需要的朋友可以參考下。
    2017-12-12
  • Aop動(dòng)態(tài)代理和cglib實(shí)現(xiàn)代碼詳解

    Aop動(dòng)態(tài)代理和cglib實(shí)現(xiàn)代碼詳解

    這篇文章主要介紹了Aop動(dòng)態(tài)代理和cglib實(shí)現(xiàn)代碼詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-12-12
  • Spring+Quartz配置定時(shí)任務(wù)實(shí)現(xiàn)代碼

    Spring+Quartz配置定時(shí)任務(wù)實(shí)現(xiàn)代碼

    這篇文章主要介紹了Spring+Quartz配置定時(shí)任務(wù)實(shí)現(xiàn)代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • Java實(shí)現(xiàn)簡(jiǎn)單的萬(wàn)年歷

    Java實(shí)現(xiàn)簡(jiǎn)單的萬(wàn)年歷

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)簡(jiǎn)單的萬(wàn)年歷,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-04-04
  • Spring?Service功能作用詳細(xì)講解

    Spring?Service功能作用詳細(xì)講解

    service層測(cè)試較簡(jiǎn)單,目前大多數(shù)測(cè)試主要是針對(duì)public方法進(jìn)行的。依據(jù)測(cè)試方法劃分,可以分為兩種:基于mock的隔離測(cè)試和基于dbunit的普通測(cè)試
    2022-12-12
  • Java list與set中contains()方法效率案例詳解

    Java list與set中contains()方法效率案例詳解

    這篇文章主要介紹了Java list與set中contains()方法效率案例詳解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • Java中的List和MySQL中的varchar相互轉(zhuǎn)換的解決方案

    Java中的List和MySQL中的varchar相互轉(zhuǎn)換的解決方案

    實(shí)體類中有一個(gè) List<String> 類型的屬性,對(duì)應(yīng)于 MySQL 表里的 varchar 字段,使用 MyBatis 添加或查詢時(shí)能互相轉(zhuǎn)換,本文給大家介紹Java中的List和MySQL中的varchar相互轉(zhuǎn)換的解決方案,需要的朋友可以參考下
    2024-06-06
  • Java 如何獲取url地址文件流

    Java 如何獲取url地址文件流

    這篇文章主要介紹了Java 如何獲取url地址文件流,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07

最新評(píng)論

梧州市| 科尔| 历史| 贡山| 沐川县| 汝南县| 新泰市| 青岛市| 丹江口市| 剑河县| 长寿区| 宁都县| 青岛市| 贺州市| 文登市| 永靖县| 金阳县| 龙江县| 桃园县| 平乐县| 江油市| 克东县| 乐昌市| 静海县| 上饶市| 尼勒克县| 临高县| 涿州市| 南靖县| 图木舒克市| 湖口县| 洱源县| 长治县| 南阳市| 湘潭市| 云龙县| 乐都县| 阿鲁科尔沁旗| 美姑县| 岚皋县| 循化|