C語言動態陣列實現

2021-10-07 04:25:35 字數 3534 閱讀 8290

環境: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...