用C语言写一个数组,实现类似JAVA语言中ArrayList的功能
2016-10-25 08:44
537 查看
此程序是在看过郝斌老师的数据结构与算法的视频后,自己用C语言实现的。整个程序比较简单,适合入门数据结构时练手。
#include <stdio.h> #include <stdlib.h> #include <malloc.h> #define true 1 #define false 0 typedef int bool; struct Array { int *arrBase; int maxlen; //最大长度 int len; //当前有效长度 };
// 函数声明 void create_arr(struct Array *arr,int maxlen);// 构造一个list bool append_arr(struct Array *arr,int value); // 向list最后一个位置添加元素 bool insert_arr(struct Array *arr,int pos,int value);//在第pos个位置上插入一个元素 bool delete_arr(); bool isEmpty(struct Array *arr); bool isFull(struct Array *arr); void show_arr(struct Array *arr); void inverse_arr(struct Array *arr); void sort_arr(struct Array *arr); void create_arr(struct Array *arr,int maxlen) { arr->arrBase = (int *)malloc(sizeof(int)*maxlen); arr->len=0; arr->maxlen=maxlen; } bool append_arr(struct Array *arr,int value) { if(isFull(arr)) { printf("数组已满,无法插入\n"); return false; } else{ arr->arrBase[arr->len]=value; arr->len++; } } bool isFull(struct Array *arr) { if(arr->len==arr->maxlen) { return true; }else{ return false; } } bool isEmpty(struct Array *arr) { if(0 == arr->len){ return true; } else{ return false; } } bool insert_arr(struct Array *arr,int pos,int value) { int i; if( pos<1 || pos > arr->len+1 || isFull(arr)) { printf("插入位置不正确或者数据已满,无法插入"); return false; } for(i=arr->len;i>=pos;i--) { arr->arrBase[i]=arr->arrBase[i-1]; } arr->arrBase[pos-1]=value; arr->len++; } void show_arr(struct Array *arr) { int i; for(i=0;i<arr->len;i++) { printf("%d ",arr->arrBase[i]); } printf("\n"); } void inverse_arr(struct Array *arr) { int i=0,j=arr->len-1; int temp = 0; while(i<j) { temp = arr->arrBase[i]; arr->arrBase[i] = arr->arrBase[j]; arr->arrBase[j] = temp; i++; j--; } } void sort_arr(struct Array *arr) { int i,j,temp; for(i=0;i<arr->len;i++) { for(j=0;j<arr->len-i-1;j++) { if(arr->arrBase[j]>arr->arrBase[j+1]) { temp = arr->arrBase[j]; arr->arrBase[j] = arr->arrBase[j+1]; arr->arrBase[j+1] = temp; } } } } int main() { struct Array arr; int maxlen = 5; create_arr(&arr,maxlen); append_arr(&arr,1); append_arr(&arr,2); append_arr(&arr,3); printf("-------------插入前的数组元素值:---------------\n"); show_arr(&arr); insert_arr(&arr,2,4); printf("-------------插入后的数组元素值:---------------\n"); show_arr(&arr); inverse_arr(&arr); printf("------------- 倒序后的数组元素值:---------------\n"); show_arr(&arr); sort_arr(&arr); printf("------------- 排序后的数组元素值:---------------\n"); show_arr(&arr); return 0; }
相关文章推荐
- 在java中实现类似c语言中goto的功能
- 在java中实现类似c语言中goto的功能
- java web中实现同一帐号同一时间只能一个地点登陆(类似QQ登录的功能)
- java web中实现同一帐号同一时间只能一个地点登陆(类似QQ登录的功能)
- 【每天算法1】:用java 语言实现,输入一个数,就相应地输出的几维数组
- java web中实现同一帐号同一时间只能一个地点登陆(类似QQ登录的功能)
- 编程:用java 语言实现,输入一个数,就相应地输出的几维数组!||用1、2、2、3、4、5这六个数字,用java写一个函数,打印出所有不同的排列,要求:"4"不能在第三位,"3"与"5"不能相连
- java web中实现同一帐号同一时间只能一个地点登陆(类似QQ登录的功能)
- java如何实现类似c语言的条件汇编功能
- JAVA采用数组结构实现一个线性表,可以增删改查,类似于ArrayList
- 对一个数组进行螺旋式打印,java语言实现
- java web中实现同一帐号同一时间只能一个地点登陆(类似QQ登录的功能)
- Java之System.arraycopy实现数组拷贝-类似C语言的memcpy
- java正则表达式实现提取需要的字符并放入数组【ArrayList数组去重复功能】
- [JAVA]集合框架之自己实现一个具有基本增查删改功能的ArrayList
- java web中实现同一帐号同一时间只能一个地点登陆(类似QQ登录的功能)
- 编写一个应用程序实现文件的复制。使用格式:java Copy 源文件目标文件,功能是将源文件的内容复制到目标文件。
- java实现输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果
- java实现求一个数组中有多少个子序列
- JAVA 用数组实现 ArrayList