C-发布一个关于数据结构的C语言代码
2014-06-07 22:16
399 查看
注:不是本人写的,看的视频,抄的
#include<stdio.h> #include<stdio.h> #include<stdlib.h> struct Arr //定义了一个数据类型,该数据类型的名字叫做struct Arr,该数据类型含有3个成员,分别是 pBase len cnt; { int * pBase; //存储的是数组第一个元素的地址 int len; //数组所能容纳的最大元素的个数 int cnt; //当前数组有效元素的个数 }; void init_arr(struct Arr * pArr, int length); //初始化 bool append_arr(struct Arr * pArr,int val); //追加 bool insert_arr(struct Arr * pArr,int pos,int val); //插入 pos表示位置 pos的值从1开始 bool dalete_arr(struct Arr * pArr,int pos,int * pVal); // int get(); // bool is_empty(struct Arr *pArr); //判断为空 bool in_full(struct Arr * pArr); //判断为满 void sort_arr(struct Arr * pArr); //排序 void show_arr(struct Arr *pArr); // 输出 void inversion_arr(struct Arr *pArr); // 倒置函数 int main (void ) { struct Arr arr; int val; init_arr(&arr,6); show_arr(&arr); append_arr(&arr,1); append_arr(&arr,8); append_arr(&arr,5); append_arr(&arr,14); append_arr(&arr,-1); append_arr(&arr,-2); if (dalete_arr(&arr,4,&val)) { printf("删除成功\n"); printf("您删除的元素师:%d \n",val); } else { printf("删除失败\n"); } /*append_arr(&arr,2); append_arr(&arr,3); append_arr(&arr,4); append_arr(&arr,5); insert_arr(&arr,1,99); append_arr(&arr,6); append_arr(&arr,7); if(append_arr(&arr,8) ) { printf("追加成功\n"); } else { printf("追加失败\n"); } */ show_arr(&arr); inversion_arr(&arr); printf("倒置之后的内容是:\n"); show_arr(&arr); sort_arr(&arr); show_arr(&arr); return 0; } 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; else return false; } void show_arr(struct Arr *pArr) //输出 { if ( is_empty (pArr)) { printf("数组为空!\n"); } else { for(int i=0; i<pArr->cnt;++i) printf("%d ",pArr->pBase[i]); printf("\n"); } } bool in_full(struct Arr * pArr) //判断是否为满 { if (pArr->cnt == pArr->len) return true; else return false; } bool append_arr(struct Arr * pArr,int val) //追加 { //满是返回flase if (in_full(pArr) ) return false; //不满时追加 pArr->pBase[pArr->cnt] = val; (pArr->cnt)++; return true; } bool insert_arr(struct Arr * pArr,int pos,int val) //插入函数 { int i; if(in_full(pArr)) return false; if(pos < 1 || pos > pArr->cnt+1) return false; for (i=pArr->cnt-1; i>=pos-1;--i) { pArr->pBase[i+1] = pArr->pBase[i]; } pArr->pBase[pos-1] = val; (pArr->cnt)++; return true; } bool dalete_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 = pArr->pBase[pos-1]; for( i = pos; i < pArr->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(i=0; i<pArr->cnt; ++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; } } } }
相关文章推荐
- 数据结构 --静态队列的一个简单的C语言代码实现
- 发布一个纯C语言的开发平台1(数据结构和运行系统)
- 求一个数据结构C语言 关于关键字统计源代码
- [第一篇]先发布一个高亮代码在线html编辑器(.NET控件),附源码,调用方法说明
- 关于hashtable线程安全的一个关键字和一段代码
- 一段旧代码,引起的关于OO中一个问题的思考
- 发布一个的Web日期选择控件及源码(其中的js代码来自于Microsoft CRM)
- 发布一个用IronPython写的小的代码编辑器
- 发布一个小工具:建立站点和域名绑定(附代码)
- 关于代码运行效率问题的一个总结和一点疑问
- 推荐一个关于.NET平台数据结构和算法的好项目
- 一个关于颜色的代码 2007、10、31
- 关于C语言For循环的一个问题~!
- VS2005发布网站问题及"aspnet_merge.exe”已退出,代码为 1的错误以及所有代码文件生成一个dll
- 一个关于使用c语言进行对文档读取替换特定字符串
- 一个C语言的原代码,有8处错误,望大家帮我修改一下。
- 关于AdoHelper的一个方便之处的代码实现细节
- Linux内核中关于数据结构操作的一个问题
- 一个关于按地址传递和按值传递区别的代码,给新手
- 关于一个asp的简单聊天室的代码问题