数据结构之数组实现
来源:互联网 发布:伦敦南岸大学知乎 编辑:程序博客网 时间:2024/06/06 10:47
//模拟数组#include<stdio.h>#include<malloc.h>#include<stdlib.h>//定义了一个数据类型,该数据类型的名字叫struct ,3个成员struct Arr{ int * pBase;//存储的是数组的第一个的地址 int len;//数组所能容纳最大元素的个数 int cnt;//当前数组有效元素的个数// int increment;//自动增长银因子};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);bool delete_arr(struct Arr * pArr, int pos, int * pVal);int get();bool is_empty(struct Arr *);bool if_full(struct Arr *);void sort_arr(struct Arr * pArr);void show_arr(struct Arr *);void inversion_arr(struct Arr * pArr);int main(){ struct Arr arr; int val; init_arr(&arr, 6); show_arr(&arr); append_arr(&arr, 1); append_arr(&arr, 2); append_arr(&arr, 3); append_arr(&arr, 4); if( delete_arr(&arr, 5, &val) ) printf("您删除的元素是%d删除成功!\n",val); else printf("删除失败!\n");// append_arr(&arr, 2);// append_arr(&arr, 3);// append_arr(&arr, 4);// append_arr(&arr, 5);// append_arr(&arr, 6);// insert_arr(&arr,5,99);// show_arr(&arr);// insert_arr(&arr,1,66); show_arr(&arr); inversion_arr(&arr); printf("倒置之后是:\n"); show_arr(&arr); sort_arr(&arr); show_arr(&arr);// printf("%d\n", arr.len); 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_full(struct Arr * pArr){ if(pArr->cnt == pArr->len) return true; else return false;}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 append_arr(struct Arr * pArr, int val){ //满时返回false 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){ int i; if( is_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 delete_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; } } }}
0 0
- 数据结构之数组实现
- 数据结构之数组实现队列
- 数据结构之动态数组实现
- 数据结构之数组实现栈结构
- 数据结构之数组实现基础队列结构
- 数据结构学习之数组栈实现
- java数据结构:线性表之数组实现
- 数据结构之list(用数组实现)
- 经典数据结构之数组实现的队列
- 数据结构学习之队列的数组实现
- 数据结构--队列之C数组实现
- 数据结构之数组16定义及实现
- 简单数据结构之数组栈(C++实现)
- 数据结构之循环数组实现队列
- 1.数据结构--线性表之数组实现
- java数据结构之多维数组实现
- 数据结构示例之顺序数组的实现
- 数据结构示例之使用数组实现栈
- vs2008 libevent 编译 支持openssl
- windows下使用eclipse开发hadoop
- XMLRepository仓储的实现~续(XAttribute方式)
- In the beginning
- eclipse4.4在开发javaweb时,工程发布不到tomcat去
- 数据结构之数组实现
- linux学习之shell脚本 ------- 文本过滤
- 并排显示DIV
- Defunct进程处理方式
- 如何使用cgroup
- VC2013下,使用curl
- 信息在网络中的漫游(三)
- 从出汗部位看男人哪里不行
- hdu 4734 F(x) 数位dp