首页 > 代码库 > 数据结构 数组的实现笔记

数据结构 数组的实现笔记

// 数组的实现

# include <stdio.h>
# include <stdlib.h>
# include <malloc.h>

struct arry
{
    int * p;        // 数组第一个元素地址 
    int len;        // 数组长度 
    int cnt;        // 数组有效数字个数 
};

void Create_Arry(struct arry *);              // 数组的创建 
void Arry_Input(struct arry *);          // 数组数据的输入
void Show_Arry(struct arry *);                // 数组的遍历
bool Is_Empty(struct arry *);                 // 判断数组是否为空
bool Is_Full(struct arry *);                  // 判断数组是否满 
void Delete_Arry(struct arry *, int, int *);  // 删除数组元素 
void Destory_Arry(struct arry *);             // 数组的销毁 

int main(void)
{
    struct arry arr;
    // 数组的创建 
    Create_Arry(&arr);
    // 数组数据的输入
    Arry_Input(&arr);
    // 数组遍历
    Show_Arry(&arr); 
    
    return 0;
} 


// 数组的创建 
void Create_Arry(struct arry * arry)
{
    printf("请输入您需要的数组最大长度:");
    scanf("%d", &arry->len);
    arry->p = (int *)malloc((arry->len) * sizeof(int));
    
    return;
}

// 数组数据的输入
void Arry_Input(struct arry * arry)
{
    int cnt;
    printf("请输入您想赋值的元素个数:");
    scanf("%d", &cnt);
    if (cnt > arry->len)
    {
        printf("您需要输入的数值的个数大于数组长度,输入失败!\n");
        exit(-1);
    }
    int i;
    for (i = 0; i < cnt; ++i)
    {
        printf("请输入第%d个数组元素的值:", i+1);
        scanf("%d", &arry->p[i]);
    } 
    arry->cnt = cnt;
    
    return;
}

// 数组的遍历
void Show_Arry(struct arry * arry)
{
    if (Is_Empty(arry))
        printf("数组为空,无数据可输出!\n");
    else
    {
        int i;
        for (i = 0; i < arry->cnt; ++i)
        {
            printf("%d\n", arry->p[i]);
        }
        printf("\n");
    } 
    
    return;
}

// 判断是否为空
bool Is_Empty(struct arry * arry)
{
    if (0 == arry->cnt)
        return true;
    else
        return false;
}

// 销毁数组中某个元素 
void Delete_Arry(struct arry * arry, int pos, int * val)
{
    if (pos > arry->cnt+1)
    {
        printf("数组中不存在该元素!\n");
        exit(-1);
    }
    *val = arry->p[pos-1]; 
    for (int i = pos-1; i < arry->cnt; ++i)
        arry->p[i] = arry->p[i+1]; 
    
    return;
} 

// 判断数组是否满
bool Is_Full(struct arry * arry)
{
    if (arry->cnt == arry->len)
        return true;
    else
        return false;
} 

// 数组的销毁 
void Destory_Arry(struct arry * arry)
{
    free(arry->p);
    arry->p = NULL;
    
    return;
} 













     

 

数据结构 数组的实现笔记