用C语言写一个数组,实现类似JAVA语言中ArrayList的功能
来源:互联网 发布:听英语的软件 编辑:程序博客网 时间:2024/05/18 00:28
此程序是在看过郝斌老师的数据结构与算法的视频后,自己用C语言实现的。整个程序比较简单,适合入门数据结构时练手。
#include <stdio.h>#include <stdlib.h>#include <malloc.h>#define true 1#define false 0typedef int bool;struct Array{ int *arrBase; int maxlen; int len;};void create_arr(struct Array *arr,int maxlen);bool append_arr(struct Array *arr,int value);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;}
0 0
- 用C语言写一个数组,实现类似JAVA语言中ArrayList的功能
- java如何实现类似c语言的条件汇编功能
- 在java中实现类似c语言中goto的功能
- 一个类似ifconfig功能的程序代码--C语言
- c语言数组实现ArrayList部分函数
- Java之System.arraycopy实现数组拷贝-类似C语言的memcpy
- 用C语言实现一个类似学籍管理系统的 e协 管理系统beta ( 正在完善中...)
- c语言 ---- ArrayList实现
- 【转载】用C#语言实现类似QQ的截图功能
- Delphi中实现C++/Java类似静态变量的功能
- Delphi中实现C++/Java类似静态变量的功能
- Delphi中实现C++/Java类似静态变量的功能
- C语言中动态数组的实现
- c语言中动态数组的实现
- C语言中动态数组的实现
- C语言中动态数组的实现
- C语言中是没有字符串数组的,用C语言实现字符串数组
- 用C语言写的一个万年历
- Spark不是唯一,三种新兴的开源数据分析工具
- 转载:Android系统启动过程uboot--kernel--Android
- android UI中滚动条目的实现
- 判断访问网站是否为手机
- 关于sac的一些笔记
- 用C语言写一个数组,实现类似JAVA语言中ArrayList的功能
- Loadrunner日志参数的设置与使用
- CI框架(ajax分页,全选,反选,不选,批量删除)
- Leetcode #70 - Climbing Stairs - Easy
- Foxmail7.2不能发送hotmail的邮件的解决
- IntelliJ IDEA 14.x 与 Tomcat 集成,并运行Web项目
- 100道动态规划——2 UVA 1625 Color Length DP 转移的代价稍微难写一点 顺便贴了刘汝佳的代码
- JAVA集合
- OpenMAX_IL_1_2_0_Specification--介绍和架构