順序表結構 就是動態陣列

2021-10-11 03:48:37 字數 1772 閱讀 3410

/*

線性結構:順序表

陣列結構

順序表有兩個特性:

1.順序表的記憶體

2.順序表的索引(就像陣列下標),順序表就是根據索引去做事情

*/#include

#include

struct linerlist

;/*建立乙個順序表*/

struct linerlist*

createlist

(int capacity)

/*容量*/

struct linerlist* list =

(struct linerlist*

)malloc

(sizeof

(struct linerlist));

/*優先初始化陣列最大長度*/

list->arraylength = capacity;

list->element =

(char*)

malloc

(sizeof

(list->arraylength));

/*讓指標變成陣列*/

list->listsize =0;

return list;

}/*二維陣列的擴充:realloc。一級陣列,通過更改一級指標,即傳進乙個二級指標去修改*/

void

changearraycapacity

(char

**array,

int oldlength,

int newlength)

int length=oldlength>newlength?oldlength:newlength;

*array =

(char*)

realloc

(*array,length*

sizeof

(char))

;/*陣列的重新申請*/

}/*移動陣列元素:拷貝的陣列,陣列的長度,陣列的當前下標*/

void

copybackward

(char

*array,

int arraynum,

int theindex)

}/*插入元素*/

void

insertelement

(struct linerlist* list,

int theindex,

int theelement)

/*插入的結構體,插入順序表的索引,插入的元素是多少*/

/*2.插入的索引正好等於陣列的下標*/

if(list->listsize == list->arraylength)

/*3.插入元素。需要把當前索引下的元素移到後面去,在上面寫乙個函式void copybackward*/

/*操作的陣列,當前總元素個數,插入的序號*/

copybackward

(list->element, list->listsize,theindex)

; list->element[theindex]

= theelement;

list->listsize++;}

/*列印的順序表*/

void

printlist

(struct linerlist* list)

printf

("\n");

}int

main()

資料結構 動態順序表

pragma once include include includetypedef int datatype typedef struct seqlist seqlist,psseqlist void seqlistinit psseqlist ps,int capacity 初始化鍊錶 void...

資料結構 動態順序表

大家有沒有發現上次靜態順序表有一定的缺陷,它會浪費很多的空間,比如我們只有10個元素但我們申請元素申請100個,這樣我們會浪費90個空間,而動態順序表我們插入多少個我們就申請多少個,大大的節省了我們大的空間。首先我們來看看動態順序表的結構 typedef struct deqlist deqlist...

資料結構 動態順序表

在說順序表之前我們先來了解一下線性表,線性表就是n個型別相同的資料元素的有限序列.線性表在邏輯上是線性的結構,可以理解為一條直線,但是在物理上不一定是連續的,物理上通常是以陣列和鏈式結構形式儲存 比如 順序表是用一段實體地址連續的儲存單元依次儲存資料元素的線性結構,一般情況下採用陣列儲存。在陣列上完...