成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

常用數(shù)據(jù)結(jié)構(gòu):線性結(jié)構(gòu)

開發(fā) 后端
常用的線性結(jié)構(gòu)有:線性表,棧,隊(duì)列,循環(huán)隊(duì)列,數(shù)組。線性表中包括順序表、鏈表等,其中,棧和隊(duì)列只是屬于邏輯上的概念,實(shí)際中不存在,僅僅是一種思想,一種理念;線性表則是在內(nèi)存中數(shù)據(jù)的一種組織、存儲(chǔ)的方式。

數(shù)據(jù)結(jié)構(gòu)是計(jì)算機(jī)存儲(chǔ)、組織數(shù)據(jù)的方式。常見(jiàn)的數(shù)據(jù)結(jié)構(gòu)分類方式如下圖:

常用的線性結(jié)構(gòu)有:線性表,棧,隊(duì)列,循環(huán)隊(duì)列,數(shù)組。線性表中包括順序表、鏈表等,其中,棧和隊(duì)列只是屬于邏輯上的概念,實(shí)際中不存在,僅僅是一種思想,一種理念;線性表則是在內(nèi)存中數(shù)據(jù)的一種組織、存儲(chǔ)的方式。

順序表

順序表將元素一個(gè)接一個(gè)的存入一組連續(xù)的存儲(chǔ)單元中,在內(nèi)存物理上是連續(xù)的。如下圖:

順序表存儲(chǔ)密度較大,節(jié)省空間;但需要事先確定容量,在時(shí)間性能方面,讀運(yùn)算較快,時(shí)間復(fù)雜度為O(1);查找運(yùn)算為O(n/2),和鏈表同樣;插入運(yùn)算和刪除運(yùn)算如果要操作中間一個(gè)元素,比如3,那么就需要把3后面的元素全部進(jìn)行移動(dòng),因此時(shí)間復(fù)雜度相對(duì)鏈表要大一些,插入時(shí)間復(fù)雜度***為O(0)或最壞為O(n);刪除時(shí)間復(fù)雜度為O([n-1]/2);

鏈表

鏈表?yè)碛泻芏嘟Y(jié)點(diǎn),每個(gè)結(jié)點(diǎn)前半部分是數(shù)據(jù)域,后半部分是指針域,指針域指針指向下一個(gè)結(jié)點(diǎn);鏈表可分為單鏈表、循環(huán)鏈表和雙鏈表。

單鏈表:


 

從上圖可以看出,單鏈表的上一個(gè)結(jié)點(diǎn)指針指向下一個(gè)結(jié)點(diǎn),***一個(gè)結(jié)點(diǎn)的指針域?yàn)閚ull。

結(jié)點(diǎn)的刪除:


 

刪除一個(gè)結(jié)點(diǎn),如刪除上圖中q結(jié)點(diǎn),只需將p結(jié)點(diǎn)中的指針域指向a3,然后將a2釋放掉(free)即可。

結(jié)點(diǎn)的插入:


 

插入一個(gè)結(jié)點(diǎn),如插入上圖中s結(jié)點(diǎn),首先將s的指針域指向a2(也就是把s的next賦值為p的next),然后將p結(jié)點(diǎn)的指針域指向x即可(p的next指向x)。

循環(huán)鏈表


 

循環(huán)鏈表與單鏈表唯一不同之處是,循環(huán)鏈表的***一個(gè)結(jié)點(diǎn)指針不為空,而是指向頭結(jié)點(diǎn)。結(jié)點(diǎn)的插入和刪除和單鏈表非常相似,就不再示范了。

雙鏈表


 

雙鏈表?yè)碛幸磺耙缓髢蓚€(gè)指針域,從兩個(gè)不同的方向把鏈表連接起來(lái),如此一來(lái),從兩個(gè)不同的方向形成了兩條鏈,因此成為雙鏈表。因此,雙鏈表的靈活度要大于單鏈表。

結(jié)點(diǎn)的刪除:


 

雙鏈表的操作比單鏈表要稍顯復(fù)雜(按照單鏈表思路來(lái)做其實(shí)也不難),如上圖,要?jiǎng)h除p節(jié)點(diǎn),首先需要將a1的后驅(qū)指向a3,然后將a3的前驅(qū)指向a1,***將p節(jié)點(diǎn)釋放掉即可。

結(jié)點(diǎn)的插入:

如上圖,插入q結(jié)點(diǎn),首先要按照方向,將步驟拆分,首先將q節(jié)點(diǎn)的前驅(qū)指向p結(jié)點(diǎn)后驅(qū),緊接著將x后驅(qū)指向a2;然后按照順序完成圖中所示的3、4步即可。

從空間性能來(lái)看,鏈表的存儲(chǔ)密度要差一些,但在容量分配上更靈活一些。從時(shí)間性能來(lái)看,查找運(yùn)算與順序存儲(chǔ)相同,插入運(yùn)算和刪除運(yùn)算的時(shí)間復(fù)雜度為O(1),要更優(yōu)于順序存儲(chǔ),但讀運(yùn)算則弱一些,為O([n+1]/2),***為1,最壞為n。

上面提到棧屬于一個(gè)邏輯概念,棧的實(shí)現(xiàn)可以用順序也可以用鏈?zhǔn)健K裱冗M(jìn)后出原則,如下圖:

Java中測(cè)試代碼如下:

  1. package com.snail.test;  
  2.  
  3. import java.util.Stack;  
  4.  
  5. public class TestStack {  
  6.  
  7.     public static void main(String[] args) {  
  8.           
  9.         Stack<String> stack = new Stack<String>();  
  10.         stack.push("NO1");  
  11.         stack.push("NO2");  
  12.         stack.push("NO3");  
  13.           
  14.         System.out.println("初始數(shù)量:" + stack.size());  
  15.  
  16.         while(!stack.isEmpty()){  
  17.             System.out.println(stack.pop());  
  18.         }     
  19.           
  20.         System.out.println("取完后的數(shù)量:" + stack.size());  
  21.     }  

隊(duì)列

隊(duì)列遵循先進(jìn)先出的原則,如下圖:

Java中測(cè)試代碼如下:

  1. package com.snail.test;  
  2.  
  3. /**  
  4.  *  
  5.  * @author Zang XT  
  6.  */ 
  7. import java.util.Queue;  
  8. import java.util.LinkedList;  
  9. public class TestQueue {  
  10.     public static void main(String[] args) {  
  11.         Queue<String> queue = new LinkedList<String>();  
  12.           
  13.         queue.offer("NO1");  
  14.         queue.offer("NO2");  
  15.         queue.offer("NO3");  
  16.           
  17.         System.out.println("初始數(shù)量" + queue.size());  
  18.         String str;  
  19.         while((str=queue.poll())!=null){  
  20.             System.out.println(str);  
  21.         }  
  22.         System.out.println("取出后數(shù)量" + queue.size());  
  23.     }  

運(yùn)行結(jié)果順序?yàn)椋撼跏紨?shù)量3,NO1,NO2,NO3,取出后數(shù)量0。

隊(duì)列還有一種形式為循環(huán)隊(duì)列,如下圖:

循環(huán)隊(duì)列有兩個(gè)指針,頭指針head和尾指針tail,尾指針一般指向的不是隊(duì)尾元素實(shí)際地址,而是指向?qū)嶋H地址的下一個(gè)空地址,因此,循環(huán)隊(duì)列一般犧牲***一個(gè)空間,用來(lái)計(jì)算該隊(duì)列是否滿了,判斷方式是tail+1 = head,既該隊(duì)列已滿。

為了盡可能的說(shuō)清楚,插了大量圖片,希望理解。以后有時(shí)間將繼續(xù)分析樹、圖等數(shù)據(jù)結(jié)構(gòu)。

原文鏈接:http://blog.csdn.net/stubbornpotatoes/article/details/7513505

【編輯推薦】

  1. 詳解Java類的生命周期
  2. Java代碼編寫的30條建議
  3. Java Excel API及詳細(xì)教程
  4. Java集合框架和數(shù)組的排序
  5. 淺談Java中static作用
責(zé)任編輯:林師授 來(lái)源: stubbornpotatoes博客
相關(guān)推薦

2021-05-12 14:09:35

鏈表數(shù)據(jù)結(jié)構(gòu)線性結(jié)構(gòu)

2023-03-13 10:08:31

數(shù)據(jù)結(jié)構(gòu)算法

2023-11-06 06:43:23

單鏈表查詢數(shù)據(jù)結(jié)構(gòu)

2021-07-11 12:06:43

python數(shù)據(jù)結(jié)構(gòu)

2018-06-06 08:54:23

數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)

2025-04-07 08:21:49

2014-07-01 15:49:33

數(shù)據(jù)結(jié)構(gòu)

2011-03-31 15:41:51

Cacti數(shù)據(jù)表結(jié)構(gòu)

2020-08-02 23:04:20

python開發(fā)代碼

2020-08-02 23:13:29

python開發(fā)數(shù)據(jù)結(jié)構(gòu)

2023-10-31 08:51:25

數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)數(shù)據(jù)

2020-10-21 14:57:04

數(shù)據(jù)結(jié)構(gòu)算法圖形

2023-04-27 09:13:20

排序算法數(shù)據(jù)結(jié)構(gòu)

2023-11-12 21:49:10

Redis數(shù)據(jù)庫(kù)

2021-08-03 10:24:59

數(shù)據(jù)跳躍鏈表結(jié)構(gòu)

2019-09-18 08:31:47

數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)

2020-06-09 08:13:15

PHP數(shù)據(jù)結(jié)構(gòu)

2009-08-11 14:14:42

C#數(shù)據(jù)結(jié)構(gòu)與算法

2021-10-12 07:58:10

MySQL索引數(shù)據(jù)

2021-10-07 09:04:49

Collections數(shù)據(jù)結(jié)構(gòu)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 亚洲欧美综合精品另类天天更新 | 亚洲国产精品福利 | 理论片87福利理论电影 | 韩日在线 | 91视频在线 | 新疆少妇videos高潮 | 国产精品乱码一区二区三区 | 欧美xxxx性xxxxx高清 | 欧美综合视频在线 | 中文字幕亚洲一区二区三区 | 亚洲成人999| 国产一区二区在线视频 | 粉嫩一区二区三区四区公司1 | 国产精品久久久久久久模特 | 成人精品视频在线 | 可以在线看的黄色网址 | 久久久久久久99 | 久草视频网站 | 精品国产乱码久久久久久丨区2区 | 成人国产精品久久 | 在线观看一区 | 91亚洲免费 | 超碰8| 久久久久久久夜 | 亚洲精精品 | 国产成人综合网 | 欧美2区 | 视频一区二区中文字幕日韩 | 国产精品一区在线观看 | 国产九九精品 | av中文字幕在线播放 | 欧美成年黄网站色视频 | 丁香久久 | 91视频大全| 欧美啪啪网站 | 国产区在线观看 | 亚洲精品日日夜夜 | 亚洲3p| 国产精品三级 | 成人精品视频免费 | 99久久久99久久国产片鸭王 |