数据结构之数组insert插入操作代码实现

#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>

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);//表示下标为0的为第一个 元素,pos值从1开始,pos=4,表示在第4个元素前面插入一个值
bool is_empty(struct Arr *pArr);//判断是否为空
bool is_full(struct Arr *pArr);//判断是否为满
void show_arr(struct Arr *pArr); //展示

int main(){
      struct Arr arr;
      init_arr(&arr,6);
      append_arr(&arr,1);
      append_arr(&arr,2);
      append_arr(&arr,3);
      append_arr(&arr,4);
      append_arr(&arr,5);
      insert_arr(&arr,1,99) ;
      show_arr(&arr);
      return 0;
}

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){//【1】
           pArr->pBase[i+1]=pArr->pBase[i];
      }
      pArr->pBase[pos-1]=val;
      (pArr->cnt)++;//先执行前面,后执行后面的
      return true;
}

image.png

insert_arr(&arr,6,99) ;

image.png

insert_arr(&arr,7,99) ;

因为数组长度为6,所以在第7个位置插入,无效。
image.png

【1】for循环的条件,不需要记,只需要自己动手模拟一下就行了

本文只显示部分关键代码,详细代码,请参考上一篇文章。
参考链接:https://www.bilibili.com/video/BV11s41167h6?p=13

posted @ 2020-05-23 18:48  菠萝味菠萝啤  阅读(681)  评论(0)    收藏  举报