连续存储
来源:互联网 发布:无网络手机电脑传文件 编辑:程序博客网 时间:2024/04/30 12:30
线性结构:把所有的结点(数组元素)用一根线穿起来。
- 连续存储[数组]
- 离散存储[链表]
线性结构的两种常见应用之一:栈(函数调用,内存分配)
线性结构的两种常见应用之一:队列(和时间有关的操作)
1.数组
什么叫数组:元素类型相同,大小相等
ArrayList:
#include <stdio.h>#include <malloc.h>//包含了malloc函数#include <stdlib.h>//包含了exit函数/*定义了一个数据类型,该数据类型的名字叫struct Arr没有变量*/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);//pos的值从1开始bool delete_arr(struct Arr * pArr,int pos,int *pVal);//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 inverseion_arr(struct Arr * pArr);int main(void){ struct Arr arr;//已经分配内存 int val init_arr(&arr,6); show_arr(&arr); bool append_arr(&arr,1); show_arr(&arr); delete_arr(&arr,1,&val); return 0;}void init_arr(struct Arr * pArr,int length){ pArr->pBase = (int*)malloc(sizeof(int)*6); 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;}bool is_full(struct Arr * pArr){ if(pArr->cnt == pArr->len) return true;}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; return true; pArr->cnt++;}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 ture;}void inverseion_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; 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
- 连续存储
- 连续存储的数组
- 连续数组存储
- 数据结构---数组【连续存储】
- 连续存储---数组
- 连续存储_数组
- 连续存储数组的算法
- 数据结构--连续存储数组算法
- cjson不连续存储问题
- 线性结构---连续存储[数组]
- 存储管理技术--连续分配
- 操作系统:存储管理技术:连续技术、非连续技术
- 搜索引擎之文件系统(一):磁盘连续存储
- 连续存储数组的算法演示
- 连续存储数组的算法演示
- 数组连续存储的相关操作
- 数据结构之线性表----连续存储实现
- c语言连续存储文件中断
- poj 3669 Meteor Shower
- VS2013中的C++11新特性
- 单出口函数的实现方式(goto do while)
- 安卓入门1-认识目录结构
- 邻接表中判边(邻接表+无向图)
- 连续存储
- 添加手势 向右滑的手势
- android_绘制鼠标
- 安卓真机调试,logcat不输出
- 数据结构中的排序
- 信息检索之词项词典及倒排记录表
- struts2里面struts。xml的namespace="/"和namespace=""的区别
- 微信公众平台开发入门教程
- perl的箭头