数组复习
来源:互联网 发布:宁波seo教程 编辑:程序博客网 时间:2024/05/18 15:56
#include<stdio.h>#include<stdlib.h>//包含了exit函数#include<malloc.h>//包含了malloc函数//定义了一个数据类型,该数据类型叫做struct Arr,它有三个成员struct Arr{ int *pBase;//存储的是数组第一个元素的地址 int len;//数组长度 int cnt;//数组有效长度};void init_arr(struct Arr * , int length);bool append_arr( struct Arr *, int val);bool insert_arr( struct Arr *, int pos, int val);//pos的值从1开始,代表要插入的位置,val表示插入的值bool delete_arr(struct Arr *, int pos, int *pval);//删除pos位置的值int get( );bool is_empty( struct Arr *);bool is_full( struct Arr *);void sort_arr( struct Arr *);void show_arr(struct Arr *);void inversion_arr( struct Arr *);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,8); append_arr(&arr,6); append_arr(&arr,5);// insert_arr( &arr,7,99); append_arr(&arr,15); /* if(delete_arr(&arr,2, &val)) { printf("删除成功!\n"); printf("您删除的元素是%d \n",val); } else { printf("删除失败!\n"); } */ /*append_arr(&arr,7); if(append_arr(&arr,8)) { printf("追加成功!\n"); } else { printf("追加失败!\n"); } */ show_arr(&arr); printf("倒置数据:\n"); inversion_arr( &arr); show_arr(&arr); printf("排序数据:\n"); sort_arr(&arr); show_arr(&arr); return 0;}void init_arr(struct Arr *pArr,int length)//array是形式参数{ pArr->pBase=(int *)malloc(sizeof(int)*length);//pArr指针变量所指向的结构体变量中的pBase成员 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))//pArr本身存放的就是结构体变量的地址 { printf("数组为空!\n"); } else { for(int i=0;i<pArr->cnt;++i) printf("%d ",pArr->pBase[i]); printf("\n"); }}bool is_full(struct Arr* pArr){ if(pArr->cnt==pArr->len) return true; else return false;}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)//在pos的前面插入val{ if(is_full(pArr)) return false; if(pos<1||pos>pArr->cnt+1) return false; for(int 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)//返回删除的元素,通过形式参数pval修改主函数的值,主函数中需要返回删除的元素的值{ if(is_empty(pArr)) return false; if(pos<1||pos>pArr->cnt) return false; *pval=pArr->pBase[pos-1]; for(int 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; }}void sort_arr( struct Arr * pArr){ for(int i=0;i<pArr->cnt;i++) { for(int j=i+1;j<pArr->cnt;j++) { if(pArr->pBase[i]>pArr->pBase[j]) { int t=pArr->pBase[i]; pArr->pBase[i]=pArr->pBase[j]; pArr->pBase[j]=t; } } }}
0 0
- 数组复习
- 复习数组
- 数组 复习
- 复习笔记14 数组
- C数组复习
- 复习之路 数组
- 复习之路 数组
- 数组 字典 复习
- C语言数组复习
- C#复习之数组
- 算法复习--------------二维数组
- java复习数组
- 数组,字符串复习+排序
- 数组复习(2)
- 后缀数组复习小记
- 后缀数组复习小记
- 后缀数组复习小记
- 树状数组复习小计
- SQLite内存使用情况分析
- STL源码分析之RB-tree结构简析
- Python图像处理(9):Hu矩
- 黑马程序员——Java语言基础(一)
- 包装设计模式
- 数组复习
- 我所理解的设计模式(C++实现)——访问者模式(Visitor Pattern)
- 桌面快捷方式上面出现了蓝色的?号
- Android虚拟机学习总结Dalvik虚拟机进程和线程的创建过程分析
- oc 编译
- spi驱动(基于linux3.4.2)
- Android之Git安装与配置
- ARQ与滑动窗口协议
- [Practical.Vim(2012.9)].Drew.Neil.Tip20学习摘要