您的位置:首页 > 编程语言 > C语言/C++

数组的增删改查的C语言实现

2015-09-26 16:58 423 查看
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
#include <stdbool.h>
typedef struct Arr{
int len;
int num;
int *head;
}A;
void initArr(A *arr,int len){
arr->head=(int *)malloc(sizeof(int)*len);
if(NULL==arr){
printf("Dynamic storage fail to distribute!");
exit(-1);
}
arr->len=len;
arr->num=0;
return;
}
bool isFull(A *arr){
if(arr->num>=arr->len){
return true;
}
return false;
}
bool isEmpty(A *arr){
if(arr->num==0){
return true;
}
return false;

}
bool insert(A *arr,int index,int val){
if(isFull(arr)){
return false;
}
if(index<0&&index>arr->len-1){
return false;
}

int temp=arr->len;
while(temp>index){
arr->head[temp]=arr->head[temp-1];
--temp;
}
arr->head[index]=val;
arr->num++;
return  true;
}
bool append(A *arr,int val){
if(isFull(arr)){
return false;
}else{
arr->head[arr->num]=val;
(arr->num)++;
}
return true;
}
bool remove_arr(A *arr,int index){
if(arr->num<=0){
return false;
}
if(index<0&&index>arr->num-1){
return false;
}
int temp=index;
while(temp<arr->num-1){
arr->head[temp]=arr->head[temp+1];
temp++;
}
--arr->num;
return true;
}
void show_arr(A *arr){
int i;
for(i=0;i<arr->num;i++){
printf("%d ",arr->head[i]);
}
printf("\n");

}
bool inverse(A *arr){
if(arr->num<=0){
return false;
}
int temp=0;
int temp2=arr->num;
while(temp!=temp2){
int x=arr->head[temp];
arr->head[temp]=arr->head[temp2-1];
arr->head[temp2-1]=x;
temp++;
temp2--;
}
return true;
}
bool replace(A * arr,int index,int val){
if(arr->num<=0 || index<0 ||index >arr->num-1){
return false;
}
arr->head[index]=val;
return true;
}
int main(void){
A arr;
initArr(&arr,6);
append(&arr,4);
append(&arr,2);
append(&arr,3);
append(&arr,1);
append(&arr,1);
insert(&arr,0,5);
remove_arr(&arr,0);
remove_arr(&arr,0);
remove_arr(&arr,0);
remove_arr(&arr,0);
remove_arr(&arr,0);
remove_arr(&arr,0);
remove_arr(&arr,0);
remove_arr(&arr,0);
append(&arr,0);
append(&arr,2);
append(&arr,30);
append(&arr,23);
inverse(&arr);
replace(&arr,3,8);

show_arr(&arr);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息