对数组的一些操作
2017-06-06 18:30
127 查看
对数组的一些基本操作, 包括:
初始化 ,追加 插入 删除 元素, 排序等。
因为 c 语言中没有布尔类型, 所以在下面程序中用 0 表示 false, 1 表示true。
# include <stdio.h>
#include <stdlib.h>
typedef struct stu
{
int len; // 数组长度
int *pBase; // 数组第一个元素地址
int cnt; // 数组中有效元素个数
} Stu;
// 函数声明
void init_arr(Stu * pArr, int length); // 初始化数组
int is_Empty(Stu * pArr); // 判断数组是否为空
void show_arr(Stu * pArr); // 输出数组元素
int append_arr(Stu * pArr, int val); // 向数组中追加元素
int inset_arr(Stu * pArr, int pos, int val); // 向数组中插入元素 pos 从1开始
int delete_arr(Stu * pArr, int pos, int * pVal); // 删除数组中某个元素
int is_full(Stu * pArr); // 判断数组是否已满
void sort_arr(Stu * pArr); // 排序(从小到大)
void inversion_arr(Stu * pArr); // 倒置数组
int main(void)
{
Stu arr;
int val; // val用来标记删除的元素。
init_arr(&arr, 6);
append_arr(&arr, 3);
append_arr(&arr, 5);
append_arr(&arr, 4);
append_arr(&arr, 1);
append_arr(&arr, 8);
show_arr(&arr);
inset_arr(&arr, 3, 99);
show_arr(&arr);
delete_arr(&arr, 3, &val);
show_arr(&arr);
sort_arr(&arr);
show_arr(&arr);
inversion_arr(&arr);
show_arr(&arr);
return 0;
}
// 初始化 数组,
void init_arr(Stu * pArr, int length)
{
pArr->pBase = (int *)malloc(sizeof(int) * length);
if (NULL != pArr->pBase)
{
pArr->cnt = 0;
pArr->len = length;
printf("建立数组成功, 初始化成功, 数组长度为%d\n", length);
}
else
{
printf("动态内存分配失败!\n");
exit(-1);
}
return;
}
// 判断数组是否为空
int is_Empty(Stu * pArr)
{
if (0 == pArr->cnt)
return 1;
else
return 0;
}
// 输出数组
void show_arr(Stu * pArr)
{
int i;
printf("当前数组为:\n");
if (0 == pArr->cnt)
{
printf("数组为空.\n");
}
else
{
for (i = 0; i < pArr->cnt; i++)
{
printf("%d ", pArr->pBase[i]);
}
printf("\n");
}
}
// 判断数组是否为满
int is_full(Stu * pArr)
{
if (pArr->len == pArr->cnt )
{
printf("该数组已满\n");
return 1;
}
else
return 0;
}
// 插入元素
int inset_arr(Stu * pArr, int pos, int val)
{
int i;
if (pos > pArr->cnt+1 || pos < 0)
return 0;
for (i = pArr->cnt; i >= pos-1; i--) // cnt 表示数组长度,
{
pArr->pBase[i] = pArr->pBase[i-1];
}
pArr->pBase[pos-1] = val;
pArr->cnt++; // 插入了一个元素之后 ,那么数组的元素个数加一。
printf("插入成功\n");
return 1;
}
// 追加
int append_arr(Stu * pArr, int val)
{
// 满时不追加
if (is_full(pArr))
return 0;
else
pArr->pBase[pArr->cnt] = val;
pArr->cnt++;
return 1;
}
// 删除
int delete_arr(Stu * pArr, int pos, int * pVal)
{
int i;
if (is_Empty(pArr))
return 0;
if (pos < 1 || pos > pArr->cnt)
return 0;
*pVal = pArr->pBase[pos-1]; // *pVal 保存的是删除的元素。
printf("您所要删除的元素是:%d\n", *pVal);
for (i = pos; i <= pArr->cnt; i++)
{
pArr->pBase[i-1] = pArr->pBase[i];
}
pArr->cnt--;
printf("删除成功\n");
return 1;
}
// 冒泡
void sort_arr(Stu * pArr)
{
int i, j, t;
for (i = 0; i <pArr->cnt-1; i++)
{
for (j = i+1; j <pArr->cnt; j++)
{
if (pArr->pBase[i] < pArr->pBase[j])
{
t = pArr->pBase[i];
pArr->pBase[i] = pArr->pBase[j];
pArr->pBase[j] = t;
}
}
}
printf("从大到小排序成功\n");
}
// 倒置
void inversion_arr(Stu * pArr)
{
int t, i = 0, j = pArr->cnt;
while (i < j)
{
t = pArr->pBase[i];
pArr->pBase[i] = pArr->pBase[j-1];
pArr->pBase[j-1] = t;
i++;
j--;
}
printf("数组倒置成功\n");
}
初始化 ,追加 插入 删除 元素, 排序等。
因为 c 语言中没有布尔类型, 所以在下面程序中用 0 表示 false, 1 表示true。
# include <stdio.h>
#include <stdlib.h>
typedef struct stu
{
int len; // 数组长度
int *pBase; // 数组第一个元素地址
int cnt; // 数组中有效元素个数
} Stu;
// 函数声明
void init_arr(Stu * pArr, int length); // 初始化数组
int is_Empty(Stu * pArr); // 判断数组是否为空
void show_arr(Stu * pArr); // 输出数组元素
int append_arr(Stu * pArr, int val); // 向数组中追加元素
int inset_arr(Stu * pArr, int pos, int val); // 向数组中插入元素 pos 从1开始
int delete_arr(Stu * pArr, int pos, int * pVal); // 删除数组中某个元素
int is_full(Stu * pArr); // 判断数组是否已满
void sort_arr(Stu * pArr); // 排序(从小到大)
void inversion_arr(Stu * pArr); // 倒置数组
int main(void)
{
Stu arr;
int val; // val用来标记删除的元素。
init_arr(&arr, 6);
append_arr(&arr, 3);
append_arr(&arr, 5);
append_arr(&arr, 4);
append_arr(&arr, 1);
append_arr(&arr, 8);
show_arr(&arr);
inset_arr(&arr, 3, 99);
show_arr(&arr);
delete_arr(&arr, 3, &val);
show_arr(&arr);
sort_arr(&arr);
show_arr(&arr);
inversion_arr(&arr);
show_arr(&arr);
return 0;
}
// 初始化 数组,
void init_arr(Stu * pArr, int length)
{
pArr->pBase = (int *)malloc(sizeof(int) * length);
if (NULL != pArr->pBase)
{
pArr->cnt = 0;
pArr->len = length;
printf("建立数组成功, 初始化成功, 数组长度为%d\n", length);
}
else
{
printf("动态内存分配失败!\n");
exit(-1);
}
return;
}
// 判断数组是否为空
int is_Empty(Stu * pArr)
{
if (0 == pArr->cnt)
return 1;
else
return 0;
}
// 输出数组
void show_arr(Stu * pArr)
{
int i;
printf("当前数组为:\n");
if (0 == pArr->cnt)
{
printf("数组为空.\n");
}
else
{
for (i = 0; i < pArr->cnt; i++)
{
printf("%d ", pArr->pBase[i]);
}
printf("\n");
}
}
// 判断数组是否为满
int is_full(Stu * pArr)
{
if (pArr->len == pArr->cnt )
{
printf("该数组已满\n");
return 1;
}
else
return 0;
}
// 插入元素
int inset_arr(Stu * pArr, int pos, int val)
{
int i;
if (pos > pArr->cnt+1 || pos < 0)
return 0;
for (i = pArr->cnt; i >= pos-1; i--) // cnt 表示数组长度,
{
pArr->pBase[i] = pArr->pBase[i-1];
}
pArr->pBase[pos-1] = val;
pArr->cnt++; // 插入了一个元素之后 ,那么数组的元素个数加一。
printf("插入成功\n");
return 1;
}
// 追加
int append_arr(Stu * pArr, int val)
{
// 满时不追加
if (is_full(pArr))
return 0;
else
pArr->pBase[pArr->cnt] = val;
pArr->cnt++;
return 1;
}
// 删除
int delete_arr(Stu * pArr, int pos, int * pVal)
{
int i;
if (is_Empty(pArr))
return 0;
if (pos < 1 || pos > pArr->cnt)
return 0;
*pVal = pArr->pBase[pos-1]; // *pVal 保存的是删除的元素。
printf("您所要删除的元素是:%d\n", *pVal);
for (i = pos; i <= pArr->cnt; i++)
{
pArr->pBase[i-1] = pArr->pBase[i];
}
pArr->cnt--;
printf("删除成功\n");
return 1;
}
// 冒泡
void sort_arr(Stu * pArr)
{
int i, j, t;
for (i = 0; i <pArr->cnt-1; i++)
{
for (j = i+1; j <pArr->cnt; j++)
{
if (pArr->pBase[i] < pArr->pBase[j])
{
t = pArr->pBase[i];
pArr->pBase[i] = pArr->pBase[j];
pArr->pBase[j] = t;
}
}
}
printf("从大到小排序成功\n");
}
// 倒置
void inversion_arr(Stu * pArr)
{
int t, i = 0, j = pArr->cnt;
while (i < j)
{
t = pArr->pBase[i];
pArr->pBase[i] = pArr->pBase[j-1];
pArr->pBase[j-1] = t;
i++;
j--;
}
printf("数组倒置成功\n");
}
相关文章推荐
- 终于搞清楚了C#二进制的一些关键操作了,解决了微软面试题,求数组中两两之差绝对值最小的值O(N)最少内存限制的问题!
- [转]C# Array 数组 及 一些操作
- 黑马程序员JAVA基础-数组以及一些基本操作
- 关于 android Intent 传对象和对象数组的一些操作
- OpenCV-对数组(矩阵)的一些操作
- 关于控件数组的一些操作
- C++下面关于字符串数组的一些操作
- JQuery对数组的一些操作总结
- 一个list,一个数组,如何在相互比较之后进行一些操作
- JQuery对数组的一些操作总结
- Iphone数组一些基础操作 NSArray/NSMutableArray
- php数组的一些常见操作汇总
- php数组的一些常见操作汇总
- OpenCV - Operations on Arrays 对数组(矩阵)的一些操作
- OpenCV - Operations on Arrays 对数组(矩阵)的一些操作
- Iphone数组一些基础操作 NSArray/NSMutableArray
- PHP操作数组的一些函数整理介绍
- 数组的一些常用操作
- 对数组的操作(群里提出的一些问题)
- JQuery对数组的一些操作总结