连续存储数组数组的算法演示
来源:互联网 发布:淘宝自动发货软件源码 编辑:程序博客网 时间:2024/05/21 13:22
连续存储数组数组的算法演示
#include <stdio.h>#include <malloc.h>#include <stdlib.h>//定义了一个数据类型,该数据类型的名字叫 struct Arrstruct Arr{ int * pBase;//存储的是数组第一个元素的地址 int len;//数组所能容纳的最大元素的个数 int cnt;//当前数组有效元素的个数 };void init_arr(struct Arr *,int);//数组初始化 bool append_arr(struct Arr *,int); //追加 bool insert_arr(struct Arr *,int,int);//插入一个数 bool delete_arr(struct Arr *,int,int*);//删除一个数 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,3);append_arr(&arr,4);append_arr(&arr,5);insert_arr(&arr,1,0);if(delete_arr(&arr,1,&val)){printf("删除成功!\n"); printf("您删除的元素是:%d\n",val);}else{printf("删除失败!\n");}show_arr(&arr);inversion_arr(&arr);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 is_full(struct Arr *pArr){if(pArr->cnt==pArr->len){return true;}else{return false;}}bool append_arr(struct Arr *pArr,int val){if(is_full(pArr)){return false;//满返回false }else{ pArr->pBase[pArr->cnt]=val; (pArr->cnt)++;return true; }}//pos的值从1开始 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){if(is_empty(pArr)){return false;}if(pos<1||pos>pArr->cnt){return false; }*pVal=pArr->pBase[pos-1];for(int i=pos-1;i<pArr->cnt;i++){pArr->pBase[i]=pArr->pBase[i+1];}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 t=0;int i,j;for(i=0;i<pArr->cnt;i++){for(j=0;j<pArr->cnt-i;j++){if(pArr->pBase[j]>pArr->pBase[j+1]){t=pArr->pBase[j];pArr->pBase[j]=pArr->pBase[j+1];pArr->pBase[j+1]=t;}}}}
0 0
- 连续存储数组数组的算法演示
- 连续存储数组的算法演示
- 连续存储数组的算法演示
- 连续存储数组的算法演示
- 郝斌数据结构连续存储数组的算法演示
- 郝斌数据结构 12 连续存储数组的算法演示
- 数据结构 12 连续存储数组的算法演示
- 连续存储数组的算法
- 【郝斌数据结构自学笔记】12-13_连续存储数组的算法演示
- 郝斌数据结构 13 连续存储数组的算法演示_2
- 连续存储的数组
- 数据结构--连续存储数组算法
- 数据结构 ——连续存储数组的算法
- 2014.1.20 连续存储数组算法
- 连续数组存储
- 数据结构---数组【连续存储】
- 连续存储---数组
- 连续存储_数组
- Reactor模式,或者叫反应器模式
- Linux下ps -ef和ps aux的区别及格式详解
- h5页面上时间格式化
- i++ + ++i问题 jvm指令
- Redis集群监控及Redis桌面客户端
- 连续存储数组数组的算法演示
- 鼠标和按键在android 上的识别和区别
- 魅族推荐平台架构解析(二)
- CSS 特殊属性介绍之 pointer-events
- Navigator的教程
- Java之多线程interrupt中断线程的三种方法
- Line in和Mic in的区别及使用
- TCP三次握手和四次挥手的全过程
- Event类