数据结构 数组的实现笔记
Posted 荒唐了年少
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构 数组的实现笔记相关的知识,希望对你有一定的参考价值。
// 数组的实现 # 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; }
以上是关于数据结构 数组的实现笔记的主要内容,如果未能解决你的问题,请参考以下文章