真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

java常用數(shù)據(jù)結(jié)構(gòu)-創(chuàng)新互聯(lián)

一:通過(guò)一些源碼展示各種數(shù)據(jù)結(jié)構(gòu)的使用方法:
1.順序表
概念及結(jié)構(gòu) :
順序表是用一段物理地址連續(xù)的存儲(chǔ)單元依次存儲(chǔ)數(shù)據(jù)元素的線性結(jié)構(gòu),一般情況下采用數(shù)組存儲(chǔ)。在數(shù)組 上完成數(shù)據(jù)的增刪查改

創(chuàng)新互聯(lián)建站是由多位在大型網(wǎng)絡(luò)公司、廣告設(shè)計(jì)公司的優(yōu)秀設(shè)計(jì)人員和策劃人員組成的一個(gè)具有豐富經(jīng)驗(yàn)的團(tuán)隊(duì),其中包括網(wǎng)站策劃、網(wǎng)頁(yè)美工、網(wǎng)站程序員、網(wǎng)頁(yè)設(shè)計(jì)師、平面廣告設(shè)計(jì)師、網(wǎng)絡(luò)營(yíng)銷人員及形象策劃。承接:成都做網(wǎng)站、成都網(wǎng)站制作、網(wǎng)站改版、網(wǎng)頁(yè)設(shè)計(jì)制作、網(wǎng)站建設(shè)與維護(hù)、網(wǎng)絡(luò)推廣、數(shù)據(jù)庫(kù)開(kāi)發(fā),以高性價(jià)比制作企業(yè)網(wǎng)站、行業(yè)門(mén)戶平臺(tái)等全方位的服務(wù)。
public interface ISequence
{   //在pos位置插入val  
boolean add(int pos,Object data);  
//查找關(guān)鍵字key 找到返回key的下標(biāo),沒(méi)有返回null;  
int search(Object key);  
//查找是否包含關(guān)鍵字key是否在順序表當(dāng)中(這個(gè)和search有點(diǎn)沖突)  
boolean contains(Object key);  
//得到pos位置的值  
Object getPos(int pos); 
//刪除第一次出現(xiàn)的關(guān)鍵字key  
Object remove(Object key);  
//得到順序表的長(zhǎng)度   
int size();  
//打印順序表 
void display();  
//清空順序表以防內(nèi)存泄漏  
void clear();
}

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

鏈表的種類:

  1. 無(wú)頭單向非循環(huán)鏈表:結(jié)構(gòu)簡(jiǎn)單,一般不會(huì)單獨(dú)用來(lái)存數(shù)據(jù)。實(shí)際中更多是作為其他數(shù)據(jù)結(jié)構(gòu)的子結(jié) 構(gòu),如哈希桶、圖的鄰接表等等。
    1. 帶頭循環(huán)單鏈表:結(jié)構(gòu)較無(wú)頭單向非循環(huán)鏈表簡(jiǎn)單。
    2. 不帶頭雙向循環(huán)鏈表:在Java的集合框架庫(kù)中LinkedList底層實(shí)現(xiàn)就是不帶頭雙向循環(huán)鏈表
// 1、無(wú)頭單向非循環(huán)鏈表實(shí)現(xiàn)
public interface ILinked
{   //頭插法 
void addFirst(int data);  
//尾插法  
void addLast(int data);  
//任意位置插入,第一個(gè)數(shù)據(jù)節(jié)點(diǎn)為0號(hào)下標(biāo) 
boolean addindex(int index,int data);  
//查找是否包含關(guān)鍵字key是否在單鏈表當(dāng)中 
boolean contains(int key);
//刪除第一次出現(xiàn)關(guān)鍵字為key的節(jié)點(diǎn)
   int remove(int key);  
     //刪除所有值為key的節(jié)點(diǎn) 
     void removeAllKey(int key);  
     //得到單鏈表的長(zhǎng)度   
     int getLength();  
     void display();   
     void clear(); 
     }
//2、帶頭循環(huán)單鏈表實(shí)現(xiàn)
public interface ICLinked
{   //頭插法  
void addFirst(int data);  
//尾插法  
void addLast(int data); 
//任意位置插入,第一個(gè)數(shù)據(jù)節(jié)點(diǎn)為0號(hào)下標(biāo)  
boolean addindex(int index,int data);  
//查找是否包含關(guān)鍵字key是否在單鏈表當(dāng)中  
boolean contains(int key);  
//刪除第一次出現(xiàn)關(guān)鍵字為key的節(jié)點(diǎn)  
int remove(int key);   
//刪除所有值為key的節(jié)點(diǎn)  
void removeAllKey(int key); 
//得到單鏈表的長(zhǎng)度  
int getLength(); 
void display();  
void clear();
}
/ 3、不帶頭雙向鏈表實(shí)現(xiàn)
public interface IDoubleLinked 
{   //頭插法  
void addFirst(int data);  
//尾插法  
void addLast(int data);
//任意位置插入,第一個(gè)數(shù)據(jù)節(jié)點(diǎn)為0號(hào)下標(biāo)  
boolean addindex(int index,int data);  
//查找是否包含關(guān)鍵字key是否在單鏈表當(dāng)中  
boolean contains(int key);  
//刪除第一次出現(xiàn)關(guān)鍵字為key的節(jié)點(diǎn)  
int remove(int key);  
//刪除所有值為key的節(jié)點(diǎn)  
void removeAllKey(int key); 
//得到單鏈表的長(zhǎng)度  
int getLength();  
void display();  
void clear(); 
}

3.棧
棧的概念及結(jié)構(gòu)
棧:一種特殊的線性表,其只允許在固定的一端進(jìn)行插入和刪除元素操作。進(jìn)行數(shù)據(jù)插入和刪除操作的一端 稱為棧頂,另一端稱為棧底。棧中的數(shù)據(jù)元素遵守后進(jìn)先出LIFO(Last In First Out)的原則。 壓棧:棧的插入操作叫做進(jìn)棧/壓棧/入棧,入數(shù)據(jù)在棧頂。
出棧:棧的刪除操作叫做出棧。出數(shù)據(jù)也在棧頂。
棧的實(shí)現(xiàn)一般可以使用數(shù)組或者鏈表實(shí)現(xiàn),相對(duì)而言數(shù)組的結(jié)構(gòu)實(shí)現(xiàn)更優(yōu)一些。因?yàn)閿?shù)組在尾上插入數(shù)據(jù)的 代價(jià)比較小

interface MyStack
{   // 判斷這個(gè)棧是否為空棧 
boolean empty();     
// 返回棧頂元素,但不出棧  
int peek();   
// 返回棧頂元素,并且出棧   
int pop();     
// 將 item 壓入棧中 
void push(int item);  
// 返回元素個(gè)數(shù)   
int size(); 
}

4.隊(duì)列
隊(duì)列的概念及結(jié)構(gòu)
隊(duì)列:只允許在一端進(jìn)行插入數(shù)據(jù)操作,在另一端進(jìn)行刪除數(shù)據(jù)操作的特殊線性表,隊(duì)列具有先進(jìn)先出 FIFO(First In First Out) 入隊(duì)列:進(jìn)行插入操作的一端稱為隊(duì)尾 出隊(duì)列:進(jìn)行刪除操作的一端稱為隊(duì)頭。
隊(duì)列的實(shí)現(xiàn)
隊(duì)列也可以數(shù)組和鏈表的結(jié)構(gòu)實(shí)現(xiàn),使用鏈表的結(jié)構(gòu)實(shí)現(xiàn)更優(yōu)一些,因?yàn)槿绻褂脭?shù)組的結(jié)構(gòu),出隊(duì)列在數(shù) 組頭上出數(shù)據(jù),效率會(huì)比較低。

interface IMyQueue
{   // 判斷這個(gè)隊(duì)列是否為空  
boolean empty();   
// 返回隊(duì)首元素,但不出隊(duì)列  
int peek();   
// 返回隊(duì)首元素,并且出隊(duì)列  
int poll();  
// 將 item 放入隊(duì)列中 
void add(int item);   
// 返回元素個(gè)數(shù)  
int size(); 
}

5:二叉樹(shù)
一棵二叉樹(shù)是結(jié)點(diǎn)的一個(gè)有限集合,該集合或者為空,或者是由一個(gè)根節(jié)點(diǎn)加上兩棵別稱為左子樹(shù)和右子樹(shù) 的二叉樹(shù)組成。
1)二叉樹(shù)的特點(diǎn):

  1. 每個(gè)結(jié)點(diǎn)最多有兩棵子樹(shù),即二叉樹(shù)不存在度大于2的結(jié)點(diǎn)。
    1. 二叉樹(shù)的子樹(shù)有左右之分,其子樹(shù)的次序不能顛倒

2)特殊的二叉樹(shù):

  1. 滿二叉樹(shù):一個(gè)二叉樹(shù),如果每一個(gè)層的結(jié)點(diǎn)數(shù)都達(dá)到大值,則這個(gè)二叉樹(shù)就是滿二叉樹(shù)。也就是 說(shuō),如果一個(gè)二叉樹(shù)的層數(shù)為K,且結(jié)點(diǎn)總數(shù)是(2^k) -1 ,則它就是滿二叉樹(shù)。
    1. 完全二叉樹(shù):完全二叉樹(shù)是效率很高的數(shù)據(jù)結(jié)構(gòu),完全二叉樹(shù)是由滿二叉樹(shù)而引出來(lái)的。對(duì)于深度為K 的,有n個(gè)結(jié)點(diǎn)的二叉樹(shù),當(dāng)且僅當(dāng)其每一個(gè)結(jié)點(diǎn)都與深度為K的滿二叉樹(shù)中編號(hào)從1至n的結(jié)點(diǎn)一一對(duì) 應(yīng)時(shí)稱之為完全二叉樹(shù)。 要注意的是滿二叉樹(shù)是一種特殊的完全二叉樹(shù)。

3)二叉樹(shù)的存儲(chǔ)結(jié)構(gòu)
二叉樹(shù)一般可以使用兩種結(jié)構(gòu)存儲(chǔ),一種順序結(jié)構(gòu),一種鏈?zhǔn)浇Y(jié)構(gòu)
1.二叉樹(shù)順序存儲(chǔ)在 物理上是一個(gè)數(shù)組,在邏輯上是一顆二叉樹(shù)。

  1. 鏈?zhǔn)酱鎯?chǔ): 二叉樹(shù)的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)是指,用鏈表來(lái)表示一棵二叉樹(shù),即
    用鏈來(lái)指示元素的邏輯關(guān)系。 通常的方法是鏈表 中每個(gè)結(jié)點(diǎn)由三個(gè)域組成,
    數(shù)據(jù)域和左右指針域,左右指針?lè)謩e用來(lái)給出該結(jié)點(diǎn)左孩子和右孩子所在
    的鏈結(jié) 點(diǎn)的存儲(chǔ)地址 。
    class Node {  
    int value;   // 結(jié)點(diǎn)中的數(shù)據(jù)域   
    Node leftChild;   // 保存左孩子結(jié)點(diǎn) 
    Node rightChild;  // 保存右孩子結(jié)點(diǎn)
    }

    (1)二叉樹(shù)的順序存儲(chǔ)結(jié)構(gòu):一般是一顆完全二叉樹(shù)。
    引入堆的概念:(利用數(shù)組的存儲(chǔ)結(jié)構(gòu),存放一顆完全二叉樹(shù))
    堆的概念及結(jié)構(gòu)
    如果有一個(gè)關(guān)鍵碼的集合K = {k0,k1, k2,…,kn-1},把它的所有元素按完全二叉樹(shù)的順序存儲(chǔ)方式存儲(chǔ) 在一個(gè)一維數(shù)組中,并滿足:Ki <= K2i+1 且 Ki<= K2i+2 (Ki >= K2i+1 且 Ki >= K2i+2) i = 0,1,2…,則稱為 小堆(或大堆)。將根節(jié)點(diǎn)大的堆叫做大堆或大根堆,根節(jié)點(diǎn)最小的堆叫做最小堆或小根堆。
    堆的性質(zhì):
    堆中某個(gè)節(jié)點(diǎn)的值總是不大于或不小于其父節(jié)點(diǎn)的值; 堆總是一棵完全二叉樹(shù)。

(2)二叉樹(shù)的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)。

// 結(jié)點(diǎn)個(gè)數(shù)
int getSize(Node root);

// 葉子結(jié)點(diǎn)個(gè)數(shù)
int getLeafSize(Node root);

// 第 k 層結(jié)點(diǎn)個(gè)數(shù)
int getKLevelSize(Node root, int k);

// 查找,依次在二叉樹(shù)的 根、左子樹(shù)、右子樹(shù) 中查找 value,如果找到,
返回結(jié)點(diǎn),否則返 null
Node find(Node root, int value);

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。


本文標(biāo)題:java常用數(shù)據(jù)結(jié)構(gòu)-創(chuàng)新互聯(lián)
文章出自:http://weahome.cn/article/dpodhe.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部