热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

C语言数据结构学习笔记(2)数组

2019独角兽企业重金招聘Python工程师标准*数组liuxinquan*#include#include#include

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

/*
数组
@liuxinquan
*/
#include
#include
#include
#include
//定义数组
struct Arr
{int len;    //数组长度int cnt;    //有效个数int *pBase; //数组首地址
};
//初始化
void init_arr(struct Arr *array, int length)
{array->pBase = (int *)malloc(sizeof(int)*length);if(NULL == array->pBase){printf("分配为空\n");exit(-1);}else{array->cnt = 0;array->len = 100;//自由指定长度}return;
}
//判断是否为空
bool is_empty(struct Arr *pArr)
{if(pArr->cnt == 0)return true;elsereturn false;
}
//判断是否为满
bool is_full(struct Arr *pArr)
{if(pArr->len == pArr->cnt)return true;elsereturn false;
}
//输出数组
int show_arr(struct Arr *pArr)
{int i;if(is_empty(pArr)){printf("数组为空\n");}else{for(i=0; icnt; i++)printf("%d  ", pArr->pBase[i]);}printf("\n");return;
}
//追加元素
bool append_arr(struct Arr *pArr, int val)
{if(is_full(pArr)){printf("追加失败\n");return false;}else{pArr->pBase[pArr->cnt] = val;   //数组末尾赋值(pArr->cnt)++;  //长度加1return true;}}
//在指定位置的前面插入元素 
bool insert_arr(struct Arr *pArr, int pos, int val)
{int i;if(is_full(pArr)){printf("数组已满\n");return false;}if(pos<1 || pos>pArr->cnt&#43;1){printf("插入失败\n");return false;}//最后一位到插入位置元素往后移for(i&#61;pArr->cnt; i>&#61;pos; i--){pArr->pBase[i] &#61; pArr->pBase[i-1];}pArr->pBase[pos-1] &#61; val;pArr->cnt&#43;&#43;;return true;
}
bool del_arr(struct Arr *pArr, int pos, int *pVal)
{int i;if(is_empty(pArr)){return false;}if(pos<1 || pos>pArr->cnt){return false;}*pVal &#61; pArr->pBase[pos-1]; //储存删除的元素//删除位置到最后一位往前移动for(i&#61;pos; icnt; i&#43;&#43;){pArr->pBase[i-1] &#61; pArr->pBase[i];}pArr->cnt--;return true;
}
//把数组元素倒过来
void inver_arr(struct Arr *pArr)
{int i &#61; 0;int j &#61; pArr->cnt-1;int t;while(ipBase[i];pArr->pBase[i] &#61; pArr->pBase[j];pArr->pBase[j] &#61; t;i&#43;&#43;;j--;}return;
}
//冒泡排序
void sort_arr(struct Arr *pArr)
{int i;int j;int t;for(j&#61;1; jcnt; j&#43;&#43;){for(i&#61;0; icnt-j; i&#43;&#43;){if(pArr->pBase[i]>pArr->pBase[i&#43;1]){t &#61;pArr->pBase[i];pArr->pBase[i] &#61; pArr->pBase[i&#43;1];pArr->pBase[i&#43;1] &#61; t;}}}return ;
}
//主程序测试
int main(void)
{int val;struct Arr arr;init_arr(&arr, 5);show_arr(&arr);append_arr(&arr, 1);append_arr(&arr, 2);append_arr(&arr, 3);append_arr(&arr, 4);append_arr(&arr, 5);show_arr(&arr);insert_arr(&arr, 5, 88);show_arr(&arr);if(del_arr(&arr, 2, &val)){printf("删除成功\n");printf("你删除的元素是&#xff1a;%d\n", val);}else{printf("删除失败\n");}show_arr(&arr);inver_arr(&arr);show_arr(&arr);sort_arr(&arr);show_arr(&arr);return;}



转:https://my.oschina.net/liuxinquan/blog/420335



推荐阅读
author-avatar
渴死的鱼2502872325
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有