線性資料結構

2021-06-17 18:34:48 字數 1494 閱讀 8500

一般將資料結構分為兩在類:線性資料結構和非線性資料結構。線性資料結構有線性表、棧、佇列、串、陣列和檔案;非線性資料結構有樹和圖。

線性表

一、arraylist

1、arraylist底層採用陣列實現,當使用不帶引數的構造方法生成arraylist物件時,實際上會在底層生成長度為10的object型別陣列。

object型別陣列

private transient object elementdata;
不帶引數的構造方法

public arraylist()
實際呼叫的方法
public arraylist(int initialcapacity)
2、如果增加的個數超過10個,那麼arraylist底層會新生成乙個陣列,長度為原陣列的1.5倍+1,然後將原陣列的內容複製到新陣列中,後續增加的內容都會放到新組中。當新陣列無法容納增加的元素時,重複該過程。
public boolean add(e e)
private void ensurecapacityinternal(int mincapacity)
jdk7已更新了新陣列長度的演算法

private void grow(int mincapacity)
3、arraylist的三個建構函式

arraylist() 建立乙個空的陣列列表

arraylist(int capacity)  建立乙個陣列列表,有指定的初始容量(capacity)。容量是用於儲存元素的基本陣列的大小。當元素被追加到陣列列表上時,容量會自動增加。

arraylist(collection c) 建立乙個陣列列表,由類集c中的元素初始化。如可放入乙個linkedlist。

4、獲取元素,檢查是否有該無素,有的話則直接取陣列的元素。

public e get(int index)
private void rangecheck(int index)
5、arraylist元素的刪除操作,需將被刪除元素的後續元素向前移動,代價比較高。
public e remove(int index)
6、集合中只能放置物件的引用,無法放置原生資料型別,需要使用原生資料型別的包裝類才能加入到集合中。

二、linkedlist

void linklast(e e)
private static class node

}

三、arraylist與linkedlist的比較分析

1、arraylist底層採用陣列實現,linkedlist底層採用雙向鍊錶實現。

2、當執行插入或者刪除操作時,採用linkedlist比較好。

3、當執行搜尋操作時,採用arraylist比較好。

資料結構 線性結構

typedef int position typedef struct lnode list struct lnode 初始化 list makeempty 查詢 define error 1 position find list l,elementtype x 插入 bool insert lis...

資料結構 線性結構

線性表基本操作有 1 list makeempty 初始化乙個新的線性表 2 elementtype findkth list l,int i 根據指定的位序i,返回l中相應元素ai i是下標 3 position find list l,elementtype x 已知x,返回線性表l中與x相同的...

線性資料結構

今天看了一些資料結構的知識,也是做一點簡,單的梳理。資料結構中常見的資料結構包括線性結構 樹型結構 圖結構等。先說一下線性結構。線性結構常見的是線性表,線性表是零個或多個資料元素組成的有限序列。線性表包括陣列 鍊錶 棧 佇列。陣列是邏輯結構上連續 儲存結構上也連續的線性表,生成時需要分配好長度。陣列...