上傳一下最近寫的動態陣列相關的api函式。
1、動態增長記憶體 策略
typedef
struct dynamicarray
dynamic_array;
2、初始化
dynamic_array*
init_array()
;
3、插入
void
pushback_array
(dynamic_array *arr,
int value)
;
4、根據位置刪除
void
removebypos_array
(dynamic_array *arr,
int pos)
;
5、根據值刪除
void
removebyvalue_array
(dynamic_array *arr,
int value)
;
6、查詢
int
findspace_array
(dynamic_array *arr,
int value)
;
7、列印
void
print_array
(dynamic_array *arr)
;
8、釋放動態陣列的記憶體
void
freespace_array
(dynamic_array *arr)
;
9、清空陣列
void
clear_array
(dynamic_array *arr)
;
10、獲得動態陣列的容量
int
capacity_array
(dynamic_array *arr)
;
11、獲得動態陣列當前元素的個數
int
size_array
(dynamic_array *arr)
;
12、根據位置獲得某個位置的元素
int
at_array
(dynamic_array *arr,
int pos)
;
1、初始化
dynamic_array*
init_array()
2、插入
void
pushback_array
(dynamic_array *arr,
int value)
// 判斷空間是否足夠可以放
if(arr->size == arr->capacity)
// 插入新元素
arr->paddr[arr->size]
= value;
arr->size++
;}
3、根據位置刪除
void
removebypos_array
(dynamic_array *arr,
int pos)
// 判斷位置是否有效
if(pos <
0|| pos >= arr->size)
// 刪除元素
for(
int i = pos; i < arr->size -
1; i++
) arr->size--
;}
4、根據值刪除 value 第乙個出現的位置
void
removebyvalue_array
(dynamic_array *arr,
int value)
// 找到值的位置
int pos =
findspace_array
(arr, value)
;removebypos_array
(arr, pos)
;}
5、查詢
int
findspace_array
(dynamic_array *arr,
int value)
// 查詢
int pos =-1
;for
(int i =
0; i < arr->size; i++)}
if(pos ==-1
)return pos;
}
6、列印
void
print_array
(dynamic_array *arr)
for(
int i =
0; i < arr->size; i++
)printf
("\n");
}
7、清空陣列
void
clear_array
(dynamic_array *arr)
arr->size =0;
}
8、獲得動態陣列的容量
int
capacity_array
(dynamic_array *arr)
return arr->capacity;
}
9、獲得動態陣列當前元素的個數
int
size_array
(dynamic_array *arr)
return arr->size;
}
10、根據位置獲得某個位置的元素
int
at_array
(dynamic_array *arr,
int pos)
11、釋放動態陣列的記憶體
void
freespace_array
(dynamic_array *arr)
if(arr->paddr !=
null
)free
(arr)
;return
;}
#define _crt_secure_no_warnings
#include
#include
#include
#include
"dynamicarray.h"
void
test01()
printf
("陣列容量:%d\n"
,capacity_array
(myarray));
printf
("陣列大小:%d\n"
,size_array
(myarray));
// 列印
print_array
(myarray)
;// 刪除
removebypos_array
(myarray,0)
;removebyvalue_array
(myarray,27)
;print_array
(myarray)
;int pos =
findspace_array
(myarray,5)
;printf
("查詢5的元素位置:%d %d\n"
, pos,
at_array
(myarray, pos));
// 銷毀
freespace_array
(myarray);}
void
main()
資料結構 動態陣列
int a newint 2 3 定義乙個兩行雜湊的陣列 靜態陣列 int b newint 2 定義行數,列數可變 陣列的儲存 int a newint 10 一維陣列 int a newint 2 3 二維陣列 int a newint 2 3,4 三維陣列 陣列儲存的特點靜態陣列 int a ...
資料結構之陣列實現棧結構
include include int top int s 返回棧頂位置 int stack empty int s 判斷棧是否為空 int stack full int s 判斷棧是否已滿 void push int s,int x int pop int s return x int main ...
搞懂資料結構 動態陣列
什麼是陣列 陣列是一種順序儲存的線性表,所有元素的儲存的記憶體位址都是連續的。動態陣列 在很多程式語言中,陣列建立後是容量是固定的,但是實際開發中,我們更希望能動態的改變陣列的容量 介面設計 int size 元素的數量 boolean isempty 是否為空 boolean contains i...