wordpress判断ie6,宁波专业seo推广价格,中国建设银行个人网站,长沙巨浪网络科技有限公司目录
连续存储的代表应用#xff1a;数组
1#xff09;结构体的定义#xff1a;
2#xff09;基本操作
对数据进行初始化
判断数组是否为空
输出数组
判断数组是否满
追加元素
插入数组元素
删除数组元素
逆序
对数组进行排序 这篇笔记是根据郝斌老师的上课讲义…目录
连续存储的代表应用数组
1结构体的定义
2基本操作
对数据进行初始化
判断数组是否为空
输出数组
判断数组是否满
追加元素
插入数组元素
删除数组元素
逆序
对数组进行排序 这篇笔记是根据郝斌老师的上课讲义整理而得
模块一线性结构 算法相当成熟栈和队列是一种特殊的线性结构 把所有的节点用一根直线串起来
连续存储的代表应用数组 1. 什么叫数组 元素类型相同大小相等 2. 数组的优缺点 存取速度快 插入元素很慢空间通常是有限制的需要知道数组的长度
1结构体的定义
#include stdio.h
#include malloc.h//包含了malloc函数
#include stdlib.h//包含了exit函数 /*定义了一个数据类型该数据类型的名字叫做struct Arr
该数据类型含有三个成员分别是pBase、len、cnt*/
struct Arr
{ int *pBase; //存储的是数组的第一个元素的地址 int len; //数组所能容纳的最大元素的个数 int cnt;//当前数组有效的元素的个数
};2基本操作
void init_arr(struct Arr *pArr, int length);//对数组进行初始化
bool append_arr(struct Arr *pArr, int val); //追加元素
bool insert_arr(struct Arr *pArr, int pose, int val);//插入数据元素
bool delete_arr(struct Arr *pArr, int pose,int *pVal);//删除数据元素,*pVal返回删除元素的值
bool is_empty(struct Arr *pArr);//判断数组是否为空
bool is_full(struct Arr *pArr);//判断数组是否满
void sort_arr(struct Arr *pArr);//对数组进行排序,冒泡排序
void show_arr(struct Arr *pArr);//输出数组
void inversion_arr(struct Arr *pArr);//逆序对数据进行初始化
void init_arr(struct Arr *pArr, int length)
{pArr-pBase (int*)malloc(sizeof(int) * length);if (NULL pArr-pBase){printf(动态内存分配失败\n);exit(-1);}else{pArr-len length;pArr-cnt 0;}return;
}
判断数组是否为空
bool is_empty(struct Arr *pArr)
{if (0 pArr-cnt)return True;elsereturn false;
}
输出数组
void show_arr(struct Arr *pArr)
{if (is_empty(pArr))printf(数组为空\n);else{for(int i0; ipArr-cnt; i)printf(%d , pArr-pBase[i]);printf(\n);}
}
判断数组是否满
bool is_full(struct Arr *pArr)
{if (pArr-cnt pArr-len)return true;elsereturn false;
}
追加元素
bool append_arr(struct Arr *pArr, int val)
{ if (is_full(pArr)) return false;pArr-pBase[pArr-cnt] val; (pArr-cnt); return true;
}插入数组元素
bool insert_arr(struct Arr * pArr, int pos, int val)//在pose前面插入元素
{int i;if (is_full(pArr))return false;if (pos1 || pospArr-cnt1)return false;for (ipArr-cnt-1; ipos-1; --i){pArr-pBase[i1] pArr-pBase[i];}pArr-pBase[pos-1] val;(pArr-cnt);return true;
}删除数组元素
bool delete_arr(struct Arr * pArr, int pos, int * pVal)
{int i;if ( is_empty(pArr) )return false;if (pos1 || pospArr-cnt)return false;*pVal pArr-pBase[pos-1];先进行赋值以免进行删除操作之后没有返回值for (ipos; ipArr-cnt; i){pArr-pBase[i-1] pArr-pBase[i];}pArr-cnt--;return true;
}逆序
void inversion_arr(struct Arr * pArr)
{int i 0;int j pArr-cnt-1;int t;while (i j){t pArr-pBase[i];pArr-pBase[i] pArr-pBase[j];pArr-pBase[j] t;//两两交换i;--j;}return;
}对数组进行排序
void sort_arr(struct Arr * pArr)
{int i, j, t;for (i0; ipArr-cnt; i){for (ji1; jpArr-cnt; j){if (pArr-pBase[i] pArr-pBase[j]){t pArr-pBase[i];pArr-pBase[i] pArr-pBase[j];pArr-pBase[j] t;}}}
}