线性结构---连续存储[数组]
来源:互联网 发布:ios wkwebview js弹窗 编辑:程序博客网 时间:2024/05/21 09:03
郝斌老师---------连续存储【数组】
#include<stdio.h>#include<malloc.h>#include<stdlib.h> //包含了exit//定义了一个数组类型struct Arr{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);bool delete_arr(struct Arr *pArr,int pos,int *pVal);int get();bool is_empty(struct Arr *pArr);bool is_full(struct Arr *pArr);void sort_arr(struct Arr *pArr);void show_arr(struct Arr *pArr);void inverse_arr(struct Arr *pArr);void main(){struct Arr arr;int val;init_arr(&arr,6);show_arr(&arr);append_arr(&arr,1);append_arr(&arr,4);append_arr(&arr,2);append_arr(&arr,5); printf("追加数组元素:");show_arr(&arr);printf("\n");insert_arr(&arr,2,9); printf("插入后的数组元素:");show_arr(&arr);printf("\n"); if(delete_arr(&arr,2,&val)){printf("删除成功!\n");printf("删除的元素是:%d\n",val);}else{printf("删除失败!\n");}printf("删除后的数组元素:");show_arr(&arr);printf("\n"); if(append_arr(&arr,8)){printf("追加成功!\n");printf("追加成功后的元素:");}else{printf("追加失败!\n");}show_arr(&arr); printf("\n");inverse_arr(&arr); printf("倒置后的元素:"); show_arr(&arr); printf("\n"); sort_arr(&arr); printf("排序后的元素:"); show_arr(&arr); printf("\n");}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 ;}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_empty(struct Arr *pArr){if(pArr->cnt==0)return true;elsereturn false;}bool is_full(struct Arr *pArr){if(pArr->cnt==pArr->len)return true;elsereturn false;}bool append_arr(struct Arr *pArr,int val){//满时返回falseif(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 inverse_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
- 线性结构---连续存储[数组]
- 07-数据结构_线性结构-连续存储-数组
- 数据结构线性结构之连续存储---数组
- 数据结构学习笔记之线性结构--连续存储[数组]
- 线性表之连续存储(数组)
- 线性表之连续存储(数组)
- 线性结构 -- 连续存储(数组), 1个简单的c语言代码实现.
- 数据结构之线性结构的顺序存储(数组)
- 01.线性表.顺序存储结构(静态数组)
- 03.线性表.顺序存储结构(动态数组)
- 线性表的顺序存储结构--用数组实现
- 线性表线性存储结构
- 连续存储的数组
- 连续数组存储
- 数据结构---数组【连续存储】
- 连续存储---数组
- 连续存储_数组
- 线性顺序存储结构
- 静态链表的应用
- 各种线性表的操作
- 线性表---就地逆置
- android studio 配置 SVN 详解
- 7
- 线性结构---连续存储[数组]
- 6- js 函数的四种调用方式
- ubuntu上使用PHP依赖管理工具Composer(二)——自动加载
- windows下与linux下安装redis及redis扩展
- ASP.NET MVC 5 - 入门
- [NOIP2012][vijos1792]摆花(dp)
- Ueditor里的【ZeroClipboard is not defined】的解决方法
- 美萌逼宝宝
- JSPatch bug热修复 集成+简单使用