【C++】【二】动态数组-Dynamic_linklist
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                【C++】【二】动态数组-Dynamic_linklist
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                // dynamicArray.cpp : 此文件包含 "main" 函數。程序執(zhí)行將在此處開始并結束。
//
#include <stdlib.h>
#include <iostream>typedef struct DYNAMICARRAY {int* paddr;int size;int capacity;
}dynamiCarray;dynamiCarray* Init_dynamiCarray() {dynamiCarray* myarray = (dynamiCarray*)malloc(sizeof(dynamiCarray));myarray->size = 0;myarray->capacity = 20;myarray->paddr = (int*)malloc(sizeof(int) * myarray->capacity);return myarray;
}void Push_dynamiCarray(dynamiCarray* arr, int value) {if (arr == NULL) {return;}//judge spaceif (arr->size == arr->capacity) {int* newspace = (int*)malloc(sizeof(int) * arr->capacity * 2);memcpy(newspace, arr->paddr, arr->capacity * sizeof(int));free(arr->paddr);arr->paddr = newspace;arr->capacity = arr->capacity * 2;}//insert new?arr->paddr[arr->size] = value;arr->size++;
}void Remove_dynamiCarray_by_pos(dynamiCarray* arr, int pos) {if (arr == NULL) {return;}if (pos < 0 || pos >= arr->size) {return;}for (int i = pos; i < arr->size-1; ++i) {arr->paddr[i] = arr->paddr[i + 1];}arr->size--;
}void Remove_dynamiCarray_by_value(dynamiCarray* arr, int value) {if (arr == NULL) {return;}int pos = -1;//int pos=Find_dynamiCarray(arr, value);for (int i = 0; i < arr->size; ++i) {if (arr->paddr[i] == value) {pos = i;break;}}Remove_dynamiCarray_by_pos(arr, pos);
}int Find_dynamiCarray(dynamiCarray* arr, int value) {if (arr == NULL) {return -1;}int pos = -1;for (int i = 0; i < arr->size; ++i) {if (arr->paddr[i] == value) {pos = i;break;}}return pos;
}void Print_dynamiCarray(dynamiCarray* arr) {if (arr == NULL) {return;}for (int i = 0; i < arr->size; ++i) {printf("%d ", arr->paddr[i]);}printf("\n");
}void Free_dynamiCarray(dynamiCarray* arr) {if (arr == NULL) {return;}if (arr->paddr != NULL) {free(arr->paddr);}free(arr);
}void Clear_dynamiCarray(dynamiCarray* arr) {if (arr == NULL) {return;}arr->size = 0;
}int Capacity_dynamiCarray(dynamiCarray* arr) {if (arr == NULL) {return -1;}return arr->capacity;
}int Size_dynamiCarray(dynamiCarray* arr) {if (arr == NULL) {return -1;}return arr->size;
}int At_dynamiCarray(dynamiCarray* arr,int pos) {/*if (arr == NULL) {return -1;}*/return arr->paddr[pos];
}void test01() {dynamiCarray* myarray = Init_dynamiCarray();printf("myarray capacity= %d\n", Capacity_dynamiCarray(myarray));printf("myarray size ? ? =%d\n", Size_dynamiCarray(myarray));for (int i = 0; i < 30; ++i) {Push_dynamiCarray(myarray, i);}printf("myarray capacity= %d\n", Capacity_dynamiCarray(myarray));printf("myarray size ? ? =%d\n", Size_dynamiCarray(myarray));Print_dynamiCarray(myarray);Remove_dynamiCarray_by_pos(myarray, 0);Remove_dynamiCarray_by_value(myarray, 27);Print_dynamiCarray(myarray);int pos=Find_dynamiCarray(myarray,5);At_dynamiCarray(myarray, pos);printf("pos 5 ? ? =%d\n", pos);Free_dynamiCarray(myarray);
}int main()
{test01();system("pause");return 0;
}
?
總結
以上是生活随笔為你收集整理的【C++】【二】动态数组-Dynamic_linklist的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 【C++】【三】单向链表
- 下一篇: 马6多少钱啊?
