数组的增删改查的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); }
相关文章推荐
- ruby 数组使用教程
- Ruby中的数组和散列表的使用详解
- C#实现AddRange为数组添加多个元素的方法
- C#动态调整数组大小的方法
- Lua和C语言的交互详解
- 详解Lua中的数组概念知识
- Perl中的列表和数组学习笔记
- 探索PowerShell (八) 数组、哈希表(附:复制粘贴技巧)
- C#中数组初始化与数组元素复制的方法
- C#交错数组用法实例
- PowerShell数组的一些操作技巧
- C#通过yield实现数组全排列的方法
- C#不重复输出一个数组中所有元素的方法
- C#实现将数组内元素打乱顺序的方法
- Ruby简明教程之数组和Hash介绍
- 关于C语言中参数的传值问题
- 简要对比C语言中三个用于退出进程的函数
- 深入C++中API的问题详解
- 基于C语言string函数的详解
- C语言中fchdir()函数和rewinddir()函数的使用详解