动态数组

来源:互联网 发布:latex 算法伪代码 编辑:程序博客网 时间:2024/06/17 15:11
#include <stdio.h>#include <stdlib.h>#include <string.h>typedef struct{    int *data;    int capacity;    int len;}IntDyArray;IntDyArray *initArray(int capacity){    IntDyArray *arr;    arr=(IntDyArray *)malloc(sizeof(IntDyArray));    arr->data=(int *)malloc(sizeof(int)*capacity);    arr->len=0;    arr->capacity=capacity;    return arr;}void freeArray(IntDyArray *arr){    free(arr);}IntDyArray *applicationMemory(IntDyArray *arr){    IntDyArray *temp;    temp = (IntDyArray *)malloc(sizeof(IntDyArray));    temp->data = (int *)malloc(sizeof(int) * arr->capacity * 2);    for(int i=0;i<arr->len;i++)    {        temp->data[i]=arr->data[i];    }    temp->len=arr->len;    temp->capacity=arr->capacity*2;    freeArray(arr);    return temp;}int add(IntDyArray *arr,int val){    if(arr->len == arr->capacity)        return 0;    arr->data[arr->len++]=val;    return 1;}IntDyArray *inputNum(IntDyArray *arr){    int num;    while(~scanf("%d",&num))    {        if(!add(arr,num))        {            arr=applicationMemory(arr);            add(arr,num);        }    }    return arr;}void outputNum(IntDyArray *arr){    int i;    for(i=0;i<arr->len;i++)    {        printf("%d\n",arr->data[i]);    }}int main(){    IntDyArray *arr;    arr=initArray(1);    arr=inputNum(arr);    outputNum(arr);    freeArray(arr);}
0 0