久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合

站長資訊網(wǎng)
最全最豐富的資訊網(wǎng)站

實(shí)例詳解Java順序表和鏈表

本篇文章給大家?guī)砹岁P(guān)于java的相關(guān)知識,其中主要介紹了關(guān)于順序表和鏈表的相關(guān)內(nèi)容,順序表就是一個(gè)數(shù)組,是用一段物理地址連續(xù)的存儲單元依次存儲數(shù)據(jù)元素的線性結(jié)構(gòu),下面一起來看一下,希望對大家有幫助。

實(shí)例詳解Java順序表和鏈表

程序員必備接口測試調(diào)試工具:立即使用
Apipost = Postman + Swagger + Mock + Jmeter
Api設(shè)計(jì)、調(diào)試、文檔、自動(dòng)化測試工具
后端、前端、測試,同時(shí)在線協(xié)作,內(nèi)容實(shí)時(shí)同步

推薦學(xué)習(xí):《java視頻教程》

1. 線性表

線性表(linear list)是n個(gè)具有相同特性的數(shù)據(jù)元素的有限序列。 線性表是一種在實(shí)際中廣泛使用的數(shù)據(jù)結(jié)構(gòu),常見的線性表:順序表、鏈表、棧、隊(duì)列、字符串…

線性表在邏輯上是線性結(jié)構(gòu),也就說是連續(xù)的一條直線。但是在物理結(jié)構(gòu)上并不一定是連續(xù)的,線性表在物理上存儲時(shí),通常以數(shù)組和鏈?zhǔn)浇Y(jié)構(gòu)的形式存儲。

實(shí)例詳解Java順序表和鏈表

2. 順序表

其實(shí)就是一個(gè)數(shù)組。【增刪查改】那為什么還有寫一個(gè)順序表,直接用數(shù)組就好了嘛?不一樣,寫到類里面 將來就可以 面向?qū)ο罅恕?/p>

2.1 概念及結(jié)構(gòu)

順序表是用一段物理地址連續(xù)的存儲單元依次存儲數(shù)據(jù)元素的線性結(jié)構(gòu),一般情況下采用數(shù)組存儲。在數(shù)組上完成數(shù)據(jù)的增刪查改。

順序表一般可以分為:

  • 靜態(tài)順序表:使用定長數(shù)組存儲。
  • 動(dòng)態(tài)順序表:使用動(dòng)態(tài)開辟的數(shù)組存儲。

靜態(tài)順序表適用于確定知道需要存多少數(shù)據(jù)的場景.

靜態(tài)順序表的定長數(shù)組導(dǎo)致N定大了,空間開多了浪費(fèi),開少了不夠用.

相比之下動(dòng)態(tài)順序表更靈活, 根據(jù)需要?jiǎng)討B(tài)的分配空間大小.

2.2 接口實(shí)現(xiàn)

我們來實(shí)現(xiàn)一個(gè)動(dòng)態(tài)順序表. 以下是需要支持的接口.

實(shí)例詳解Java順序表和鏈表

這里我們挨個(gè)拆解出來:

public class MyArrayList {      public int[] elem;     public int usedSize;//有效的數(shù)據(jù)個(gè)數(shù)      public MyArrayList() {         this.elem = new int[10];     }     // 打印順序表public void display() {          }     System.out.println();}// 獲取順序表長度public int size() {     return 0;}// 在 pos 位置新增元素public void add(int pos, int data) {}// 判定是否包含某個(gè)元素public boolean contains(int toFind) {     return true;}// 查找某個(gè)元素對應(yīng)的位置public int search(int toFind) {     return -1;}// 獲取 pos 位置的元素public int getPos(int pos) {     return -1;}// 給 pos 位置的元素設(shè)為 valuepublic void setPos(int pos, int value) {}//刪除第一次出現(xiàn)的關(guān)鍵字keypublic void remove(int toRemove) {}// 清空順序表public void clear() {}}
登錄后復(fù)制

這是我們順序表的基本結(jié)構(gòu)。下面我們就把順序表的功能一個(gè)一個(gè)拆解出來:

打印數(shù)據(jù)表:

public void display() {     for (int i = 0; i < this.usedSize; i++) {         System.out.print(this.elem[i] + " ");     }     System.out.println();}
登錄后復(fù)制

獲取順序表長度:

public int size() {     return this.usedSize;}
登錄后復(fù)制

在 pos 位置新增元素:

public void add(int pos, int data) {     if(pos < 0 || pos > this.usedSize) {         System.out.println("pos 位置不合法");         return;     }     if(isFull()){         this.elem = Arrays.copyOf(this.elem,2*this.elem.length);     }     for (int i = this.usedSize-1; i >= pos; i--) {         this.elem[i + 1] = this.elem[i];     }     this.elem[pos] = data;     this.usedSize++;}//判斷數(shù)組元素是否等于有效數(shù)據(jù)個(gè)數(shù)public boolean isFull() {     return this.usedSize == this.elem.length;}
登錄后復(fù)制

判斷是否包含某個(gè)元素:

public boolean contains(int toFind) {     for (int i = 0; i < this.usedSize; i++) {         if (this.elem[i] == toFind) {             return true;         }     }     return false;}
登錄后復(fù)制

查找某個(gè)元素對應(yīng)的位置:

public int search(int toFind) {     for (int i = 0; i < this.usedSize; i++) {         if (this.elem[i] == toFind) {             return i;         }     }     return -1;}
登錄后復(fù)制

獲取 pos 位置的元素:

public int getPos(int pos) {     if (pos < 0 || pos >= this.usedSize){         System.out.println("pos 位置不合法");         return -1;//所以 這里說明一下,業(yè)務(wù)上的處理,這里不考慮     }     if(isEmpty()) {         System.out.println("順序表為空!");         return -1;     }     return this.elem[pos];}//判斷數(shù)組鏈表是否為空public boolean isEmpty() {     return this.usedSize == 0;}
登錄后復(fù)制

給 pos 位置的元素設(shè)為 value:

public void setPos(int pos, int value) {     if(pos < 0 || pos >= this.usedSize) {         System.out.println("pos 位置不合法");         return;     }     if(isEmpty()) {         System.out.println("順序表為空!");         return;     }     this.elem[pos] = value;}//判斷數(shù)組鏈表是否為空public boolean isEmpty() {     return this.usedSize == 0;}
登錄后復(fù)制

刪除第一次出現(xiàn)的關(guān)鍵字key:

public void remove(int toRemove) {     if(isEmpty()) {         System.out.println("順序表為空!");         return;     }     int index = search(toRemove);//index記錄刪除元素的位置     if(index == -1) {         System.out.println("沒有你要?jiǎng)h除的數(shù)字!");     }     for (int i = index; i < this.usedSize - 1; i++) {         this.elem[i] = this.elem[i + 1];     }     this.usedSize--;     //this.elem[usedSize] = null;引用數(shù)組必須這樣做才可以刪除}
登錄后復(fù)制

清空順序表:

public void clear() {     this.usedSize = 0;}
登錄后復(fù)制

2.3 順序表的問題及思考

  1. 順序表中間/頭部的插入刪除,時(shí)間復(fù)雜度為O(N)

  2. 增容需要申請新空間,拷貝數(shù)據(jù),釋放舊空間。會(huì)有不小的消耗。

  3. 增容一般是呈2倍的增長,勢必會(huì)有一定的空間浪費(fèi)。例如當(dāng)前容量為100,滿了以后增容到200,我們再繼續(xù)插入了5個(gè)數(shù)據(jù),后面沒有數(shù)據(jù)插入了,那么就浪費(fèi)了95個(gè)數(shù)據(jù)空間。

思考: 如何解決以上問題呢?下面給出了鏈表的結(jié)構(gòu)來看看。

3. 鏈表

3.1 鏈表的概念及結(jié)構(gòu)

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

實(shí)例詳解Java順序表和鏈表

實(shí)際中鏈表的結(jié)構(gòu)非常多樣,如果按一般來分的話就是四種:

  • 單向鏈表

  • 雙向鏈表

  • 循環(huán)鏈表

  • 雙向循環(huán)鏈表

如果細(xì)分的話就有以下情況組合起來就有8種鏈表結(jié)構(gòu):

  • 單向、雙向
  • 帶頭、不帶頭
  • 循環(huán)、非循環(huán)

這八種分別為:

  • 單向 帶頭 循環(huán)

  • 單向 不帶頭 循環(huán)

  • 單向 帶頭 非循環(huán)

  • 單向 不帶頭 非循環(huán)

  • 雙向 帶頭 循環(huán)

  • 雙向 不帶頭 循環(huán)

  • 雙向 帶頭 非循環(huán)

  • 雙向 不帶頭 非循環(huán)

注:上述加粗是我們重點(diǎn)需要學(xué)習(xí)的!!!

實(shí)例詳解Java順序表和鏈表實(shí)例詳解Java順序表和鏈表實(shí)例詳解Java順序表和鏈表

雖然有這么多的鏈表的結(jié)構(gòu),但是我們重點(diǎn)掌握兩種:

  • 無頭單向非循環(huán)鏈表:結(jié)構(gòu)簡單,一般不會(huì)單獨(dú)用來存數(shù)據(jù)。實(shí)際中
贊(0)
分享到: 更多 (0)
?
網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號
久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合
日韩一区免费| 国产精品一站二站| 欧美日韩精品免费观看视完整 | 欧美日韩视频免费观看| 91综合网人人| 欧美日韩国产免费观看| 中文字幕av亚洲精品一部二部 | 黄色成人91| 青草综合视频| 日韩成人精品一区| 亚洲欧洲美洲av| 欧美天堂亚洲电影院在线观看| 巨乳诱惑日韩免费av| 日本h片久久| 九九99久久精品在免费线bt| 国产综合色产| 欧美久久亚洲| 久久久久午夜电影| 一区二区亚洲视频| 欧美a一区二区| 国产女优一区| 国产自产自拍视频在线观看| 久久最新视频| 美女av在线免费看| 日韩欧美激情| 午夜久久免费观看| 精品视频97| 日韩国产精品久久久| 久久视频国产| 美女精品久久| 欧美久久一区二区三区| 亚洲高清av| 成人一二三区| 亚洲精品三级| 激情婷婷综合| 国产拍在线视频| 欧美激情日韩| 欧美三区不卡| 日本国产欧美| 蜜桃传媒麻豆第一区在线观看| 欧美国产小视频| 国产精品男女| 国产日产精品_国产精品毛片 | 99re国产精品| 日韩国产激情| 国产在线一区不卡| 国产情侣久久| 亚洲精品在线二区| 久久亚洲电影| 一本一道久久a久久| 午夜亚洲福利在线老司机| 欧美日韩第一| 免费视频一区三区| 亚洲国产一区二区在线观看| 国产麻豆久久| 欧美亚洲国产激情| 激情自拍一区| 免费久久99精品国产自在现线| 在线亚洲观看| 日韩午夜视频在线| 国产亚洲精aa在线看| 精品久久影院| 成人免费电影网址| 亚洲在线一区| 欧美永久精品| 精品久久国产一区| 欧美精品高清| 婷婷精品进入| 伊人久久一区| 久久亚洲精品中文字幕| 色婷婷精品视频| 日本大胆欧美人术艺术动态| 日韩欧美激情电影| 国产一区调教| 欧美福利专区| 国产美女亚洲精品7777| 欧美xxxx中国| 男人的天堂亚洲一区| 国产精品第一| 好看的亚洲午夜视频在线| 日本综合精品一区| 日韩福利一区| 蜜桃视频在线观看一区| 欧美激情aⅴ一区二区三区| 久久在线电影| 免费一级欧美片在线观看网站 | 亚洲精品少妇| 成人高清一区| 亚洲精品一级二级三级| 亚洲黄色中文字幕| 动漫av一区| 欧美激情一区| 欧美激情福利| 在线综合亚洲| 亚洲国产成人二区| 爽好多水快深点欧美视频| 精品视频黄色| 国产精品亚洲产品| 在线亚洲观看| 欧美精品资源| 精品国产欧美| 日本成人在线视频网站| 在线观看免费一区二区| 欧美不卡高清一区二区三区| 精品一区二区男人吃奶| 欧美精品影院| 中文字幕视频精品一区二区三区| 人人精品亚洲| 精品视频91| 久久99视频| 欧美日韩91| 日本a口亚洲| 国产精品一区二区三区美女| 婷婷综合五月| 国产精品一区二区精品视频观看| 亚洲一卡久久| 女人av一区| 国产欧美一区二区三区精品酒店| 国产精品亚洲产品| 日韩激情精品| 91精品国产自产在线丝袜啪| 日韩欧美2区| 欧美亚洲tv| 欧美激情 亚洲a∨综合| 久久精品国产精品亚洲毛片| 国产毛片精品| 国产欧美日韩影院| 国产精品地址| 播放一区二区| 最新日韩av| 日韩黄色av| 国产精品传媒麻豆hd| 久久久精品区| 美女网站视频一区| 在线精品视频在线观看高清| 激情欧美一区二区三区| 老鸭窝亚洲一区二区三区| 中文一区一区三区免费在线观 | 国产伊人久久| 正在播放日韩精品| 亚洲午夜久久久久久尤物| 91中文字幕精品永久在线| 国产成人免费| 九九久久电影| 天堂久久av| 美女视频网站久久| 久久国产电影| 亚洲精品女人| 都市激情国产精品| 羞羞答答国产精品www一本| 日韩不卡一二三区| 久久青青视频| 亚洲日本在线观看视频| 免费亚洲婷婷| 一区在线视频观看| 欧美激情在线精品一区二区三区| 蜜桃精品视频| 亚洲天堂黄色| 911精品国产| 亚洲成人不卡| 91精品国产自产观看在线| 日韩欧美国产精品综合嫩v| 亚洲日本三级| 午夜av成人| 国产精品亚洲欧美一级在线| 激情五月综合| 卡一卡二国产精品| 精精国产xxxx视频在线野外| 青青国产精品| 亚洲欧洲一区| 红杏一区二区三区| 一区二区高清| 欧美日韩一二| 四虎国产精品免费观看| 无码日韩精品一区二区免费| 亚洲午夜黄色| 日韩免费在线| 久久一区国产| 国产欧美二区| 日韩国产欧美视频| 欧美日韩少妇| 婷婷六月综合| 激情综合在线| 亚洲午夜黄色| 99视频精品视频高清免费| 成人在线超碰| 国产精品久久久久9999高清| 在线观看一区| 亚洲专区视频| 一区二区国产在线观看| 亚洲在线成人| 蜜桃久久av| 亚洲一级在线| 丝袜a∨在线一区二区三区不卡| 国产精品99免费看| 亚洲精品国产偷自在线观看| 久久精品官网| 九一成人免费视频| 国产婷婷精品| 日韩综合一区二区|