线性存储结构--数组

#include #include //定义了一个数据类型叫struct Arr该数据类型包含 3个成员 struct Arr{//12个字节 int *pBase; //存储数组第一个元素的地址 int len; //数组所能容纳的最大元素个数 int cnt; //当前数组有效元素的个数 }; //不用指针 用值得话 导致方法里存在局部变量 不能使主方法的改变只能传地址 void Init_arr(struct Arr *p,int length){ //传参哪个变量 长度 p->pBase=(int *)malloc(sizeof(int)*length); //4*6=24个字节 表示p指向pBase这个成员变量(分配内存)第一块第一个字节地址赋给pBase if(NULL==p->pBase){//地址满了就会把NULL赋给pBase printf("动态内存分配失败"); exit(-1); //终止程序 } else{ p->len=length; //赋值长度 p->cnt=0; //还未赋值 } return ; }bool is_empty(struct Arr *p){//判断是否为空 if(0==p->cnt){//有效个数为空 printf("有效个数为空!"); return true; } else return false; }void show_arr(struct Arr *p){//输出内容 if(is_empty(p)){ //p已经存放arr的地址//调用是否为空为true执行下一条语句 printf("数组为空!\n"); } else{ for(int i=0; icnt; i++) printf("%d\t",p->pBase[i]); printf("\n"); } }bool is_full(struct Arr *p){//判断是否满 if(p->cnt==p->len){ printf("已满!"); return true; } else return false; }bool append_arr(struct Arr *p,int x){//添加数值 //判断是否满 if(is_full(p)) return false; //不满时加值 p->pBase[p->cnt]=x; //p->pBase[0]=1; cnt=1 (p->cnt)++; //p->pBase[1]=2; cnt=2 return true; //p->pBase[2]=3; cnt=3//cnt为元素个数 //p->pBase[p->cnt]=x; cnt的值为新放元素下标 }//(p->cnt)++; 元素个数加一bool insert_arr(struct Arr *p,int pos,int x){//在位置pos前面插入(pos从1开始)插入元素x后面的元素后移 int i; if(is_full(p)) return false; if(pos<1||pos>p->cnt+1){ printf("插入位置不合法!"); return false; } for(i=p->cnt-1; i>=pos-1; i--){ p->pBase[i+1]=p->pBase[i]; //后移 } p->pBase[pos-1]=x; p->cnt++; return true; }int main(){ int n,pos,x,L,t; struct Arr arr; //struct Arr 相当于数据类型只定义了是垃圾数字需要初始化 printf("输入数组长度:"); scanf("%d",&L); Init_arr(&arr,L); //初始化传地址 &arr=strcut Arr *pprintf("你要输入几个值:"); scanf("%d",&t); printf("请输入:"); for(int i=0; i

线性存储结构--数组
文章图片


【线性存储结构--数组】转载于:https://www.cnblogs.com/lizhenye/p/10834751.html

    推荐阅读