環境:vs2015
1、標頭檔案
dynamicarray.h
#ifndef dynamicarray_h //如果沒有定義
#define dynamicarray_h //則定義
#include #include #include typedef struct dynamicarray
dynamic_array;
//定義一些對結構體操作的函式 增刪改查
dynamic_array* init_array(); //初始化函式
void pushback_array(dynamic_array* arr, int value); //插入函式
void removebypos_array(dynamic_array* arr, int pos); //根據位置刪除函式
void removebyvalue_array(dynamic_array* arr, int value); //根據第一次出現的數值刪除函式
void destroy_array(dynamic_array* arr); //釋放記憶體空間
int find_array(dynamic_array* arr, int value); //查詢資料,返回位置
void print_array(dynamic_array* arr); //列印資料
void clear_array(dynamic_array* arr); //清空陣列
int capacity_array(dynamic_array* arr); //獲得動態陣列容量
int size_array(dynamic_array* arr); //獲得動態陣列當前元素的個數
int at_array(dynamic_array* arr, int pos); //根據位置獲得動態元素
#endif
2、原始檔 函式的實現
dynamic_array.c
#include "dynamicarray.h"
//函式的實現
dynamic_array* init_array() //初始化函式
void pushback_array(dynamic_array* arr, int value) //插入函式
//判斷動態陣列容量與實際大小
if (arr->capacity == arr->size) //兩個相等,無法插入新的資料
//插入元素
arr->padder[arr->size] = value; //插入
arr->size++; //長度自加1
}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--; //長度自減
}void removebyvalue_array(dynamic_array* arr, int value) //根據第一次出現的數值刪除函式
//遍歷動態陣列
int pos = -1;
for (int i = 0;i < arr->size;i++)
}//刪除
removebypos_array(arr, pos);
}void destroy_array(dynamic_array* arr) //釋放記憶體空間
if (arr->padder) //若動態陣列位址不為空
free(arr); //釋放結構體
}int find_array(dynamic_array* arr, int value) //查詢資料
//遍歷陣列
int pos = -1;
for (int i = 0;i < arr->size;i++)
}return pos;
}void print_array(dynamic_array* arr) //列印資料
for (int i = 0;i < arr->size;i++)
printf("\n");
}void clear_array(dynamic_array* arr) //清空陣列
arr->size = 0; //將當前動態陣列大小置為0
}int capacity_array(dynamic_array* arr) //獲得動態陣列容量
return arr->capacity; //返回容量
}int size_array(dynamic_array* arr) //獲得動態陣列當前元素的個數
return arr->size; //返回當前元素個數
}int at_array(dynamic_array* arr, int pos) //根據位置獲得動態元素
3、主函式 測試
#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, 3);
removebyvalue_array(myarray, 120);
//輸出動態陣列
print_array(myarray);
//查詢元素
printf("位置是%d\n", find_array(myarray, 190));
//銷毀動態陣列
destroy_array(myarray);
}int main(void)
C語言佇列實現 動態陣列
queue.h created on 2011 10 7 author admin ifndef queue h define queue h include include the data type that contained in the queue typedef int queuedat...
C語言實現動態陣列
include include 要使用malloc是要包含此標頭檔案 include 要使用memset是要包含此標頭檔案 intmain for i 0 i 列印陣列 free p 釋放記憶體,malloc和free一定要記得成組使用,不然會導致程式吃記憶體 getchar 讓程式停頓,觀察輸出 ...
C語言 動態陣列的實現
動態陣列 dynamic array 顧名思義就是能改變大小的陣列。使用動態陣列可以有效的提高記憶體利用率。下面附上動態陣列的c語言實現 標頭檔案 dynamic array.h ifndef dynamic array h define dynamic array h ifdef cpluscpl...