順序表是線性表的一種,線性表是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...