資料結構 順序表

2021-09-12 17:23:04 字數 3966 閱讀 7770

順序表是線性表的一種,線性表是n個具有相同特性的資料元素的有限序列。線性表是一種在實際中廣泛使用的資料結構,常見的線性表:順序表,鍊錶,棧,佇列,字串…

順序表是用一段實體地址連續的儲存單元一次儲存資料元素的線性結構,一般情況下採用陣列儲存。在陣列上完成資料的增刪改查。順序表一般分為:靜態順序表(使用定長陣列儲存)動態順序表(使用動態開闢的陣列儲存)

#pragma once

#include

#include

#include

/*---元素型別---*/

typedef

int elementtype;

/*---順序表---*/

typedef

struct seqlist seqlist;

/*---初始化---*/

void

init

(seqlist* sl)

/*---釋放---*/

void

destory

(seqlist* sl)

/*---擴容---*/

void

enlargecapacity

(seqlist* sl)

}/*---尾插---*/

void

pushback

(seqlist* sl, elementtype e)

/*---尾刪---*/

void

popback

(seqlist* sl)

/*---頭插---*/

void

pushfront

(seqlist* sl, elementtype e)

// 將新元素放入0號位置

sl->_sl[0]

= e;

}/*---頭刪---*/

void

popfront

(seqlist* sl)

--sl-

>_size;

}/*---查詢---*/

intfind

(const seqlist* sl, elementtype e)

}// 未找到,返回-1

return-1

;}/*---插入---*/

void

insert

(seqlist* sl,

int pos, elementtype e)

++sl-

>_size;

// 檢查是否需要擴容

enlargecapacity

(sl)

;// 將從pos往後的所有元素集體向後移動乙個位置

for(

int i =

(int

)(sl-

>_size)

; i > pos;

--i)

// 將元素放入pos位置

sl->_sl[pos]

= e;

}/*---擦除---*/

void

erase

(seqlist* sl, size_t pos)

// 將從pos開始的所有元素集體向前移動乙個位置,將pos覆蓋掉

for(

int i = pos; i <

(int

)(sl-

>_size)-1

;++i)

--sl-

>_size;

}/*---移除---*/

void

remove

(seqlist* sl, elementtype e)

}// 沒找到,直接返回

if(pos ==-1

)// 移除pos位置的元素

erase

(sl, pos);}

/*---移除所有---*/

void

removeall

(seqlist* sl, elementtype e)

} sl-

>_size = cnt;

}/*---修改---*/

void

modify

(seqlist* sl, size_t pos, elementtype e)

sl->_sl[pos]

= e;

}/*---氣泡排序---*/

void

bubblesort

(seqlist* sl)}}

}/*---二分查詢---*/

intbinarysearch

(const seqlist* sl, elementtype e)

// 中間位置值比目標值小

else

if(sl-

>_sl[mid]

< e)

// 中間位置值和目標值相同

else

}// 沒找到,返回-1

return-1

;}/*---順序表列印---*/

void

display

(const seqlist* sl)

printf

("\n");

}

public

class

seqlist

// 獲取元素數量

public

intsize()

// 刪除全部指定元素

public

void

removeall

(int toremove)

}this

.size = j;

}// 刪除指定元素

public

void

remove

(int toremove)

for(

int i = pos; i <

this

.size -1;

++i)

--this

.size;

}// 設定指定下標元素

public

void

setpos

(int pos,

int val)

// 獲取指定下標元素

public

intgetpos

(int pos)

// 是否包含

public

boolean

contains

(int target)

// 查詢

public

intsearch

(int target)

}return-1

;}// 新增

public

void

add(

int pos,

int val)if(

this

.size >=

this

.arr.length)

for(

int i =

this

.size; i > pos;

--i)

this

.arr[pos]

= val;

++this

.size;

}// 擴容

private

void

realloc()

this

.arr = temp;

}// 順序表列印

public

void

display()

system.out.

print

(", ");

} system.out.

println

("]");

}}

資料結構 順序表

順序表的特徵 1由唯一的表名標識 2佔據一塊連續的儲存空間 3資料順序存放,元素之間有先後關係 定義動態的順序表 define maxsize 100 typedef struct sqlist 這個結構體型別存放的是順序表的資訊和順序表的資料 初始化順序表 void initsqlist sqli...

資料結構 順序表

順序表示最簡單的乙個資料結構,直接貼 吧,因為比較簡單。include include typedef struct sqlist sqlist void initlist sqlist l l length 0 void getelem sqlist l 初始化 l length j printf...

資料結構順序表

include include include include include include include include include include include include include include using namespace std define maxn 100000...