/*顺序数组的练习*/
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
//定义一个结构体数组变量
typedef struct{
int * pBase; //定义一个指针变量,指向数组
int cnt; //定义一个×××变量表示当前数组的有效元素个数
int length; //定义数组的长度
}Arr;
void init_Arr(Arr * pArr,int length); //初始化数组
void show_Arr(Arr * pArr); //数组显示
bool is_empty(Arr * pArr); //判断数组是否为空
bool append(Arr * pArr,int val); //向数组中追加元素
bool is_full(Arr * pArr); //判断数组是否已满
bool insert(Arr * pArr,int inval,int index); //向数组中插入数值
//主函数入口
void main(){
Arr arr; //定义一个Arr类型的结构体变量arr,在内存空间中申请一块空间给数组使用
init_Arr(&arr,6);
append(&arr,3);
append(&arr,8);
append(&arr,4);
printf("目前数组中有%d个元素\n",arr.cnt);
if(insert(&arr,3,2)){
printf("插入值成功\n");
}else{
printf("插入值失败\n");
}
show_Arr(&arr);
}
void init_Arr(Arr * pArr,int length){
pArr->pBase=(int *)malloc(sizeof(int) * length);
if(NULL==pArr->pBase){
printf("给数组分配空间失败.");
exit(-1);
}
else{
pArr->length = length;
pArr->cnt = 0;
}
}
void show_Arr(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(Arr * pArr){
if(pArr->cnt==0){
return true;
}
else{
return false;
}
}
bool append(Arr * pArr,int val){
if(is_full(pArr)){
return false;
}
else{
pArr->pBase[pArr->cnt] = val;
(pArr->cnt)++;
return true;
}
}
bool is_full(Arr * pArr){
if(pArr->cnt==pArr->length){
return true;
}
else{
return false;
}
}
bool insert(Arr * pArr,int inval,int index){
if(is_full(pArr)){
return false;
}
if(index<0 || index>pArr->length){
return false;
}
else{
for(int j=pArr->cnt;j>index;j--){
pArr->pBase[j]=pArr->pBase[j-1];
}
pArr->pBase[index]=inval;
(pArr->cnt)++;
return true;
}
}
运行结果如下
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。