链表的可变数组的实现和一些基本操作
来源:互联网 发布:横截面数据是指同一 编辑:程序博客网 时间:2024/04/30 11:06
链表的可变数组的实现和一些基本操作
有兴趣的自己看代码,里面有注释
#include<stdio.h>#include<stdlib.h> #define BLOCK 20typedef struct _array{ int *array; int size;}Array;Array array_create(int init_size);int* array_at(Array *a,int index);void array_inflate(Array *a,int more_size);void array_swap(Array *a,int cnt);Array array_create(int init_size){ //返回一个结构体的a,这个方法不错 Array a; a.size = init_size; a.array = (int*)malloc(sizeof(int)*a.size); return a;}int *array_at(Array *a,int index){ if (index >= a->size-1) { array_inflate(a,(index/BLOCK+1)*BLOCK - a->size); } return &(a->array[index]);}void array_inflate(Array *a,int more_size){ int *p = (int*)malloc(sizeof(int)*(a->size + more_size)); //memcpy(p,a,) for(int i=0;i < a->size;i++) { p[i] = a->array[i]; } free(a->array); a->array = p; a->size = a->size + more_size;}void array_swap(Array *a,int cnt){ //int len = cnt; //int i = 0; for (int i=0;i < cnt/2;i++) { int temp = a->array[i]; a->array[i] = a->array[cnt-i-1]; a->array[cnt-i-1] = temp; }}int main(){ Array a = array_create(5); int number = 0; int cnt = 0; while(number != -1) { scanf("%d",&number); if (number != -1) { *array_at(&a,cnt++) = number; } } array_swap(&a,cnt); for (int i = 0;i < cnt-1;i++) { printf("%d ",a.array[i]); } printf("%d\n",a.array[cnt-1]); return 0;}
0 0
- 链表的可变数组的实现和一些基本操作
- 操作Json和Json数组的一些基本方法
- 可变字符串的基本操作
- 可变字符串的基本操作
- ios可变数组的操作
- 链表的一些基本操作
- 链表的一些基本操作
- 链表的一些基本操作
- 链表的一些基本操作
- “双向链表的一些基本操作”
- 实现基于静态数组的顺序表的基本操作
- 用数组实现栈的基本操作
- 线性表的基本操作和实现
- 利用数组实现栈的一些操作
- 【基础知识】Oracle的一些基本操作和
- redis和mogodb的一些基本操作
- 线性表的基本操作(数组实现)
- 数组实现的线性表基本操作[C]
- 顺序队
- getopt(分析命令行参数)
- jQuery 事件 - blur() 方法
- 第六题
- POJ - 3104 Drying 二分 + 贪心
- 链表的可变数组的实现和一些基本操作
- 有意思 SDWebImage 有两个宏 来判断程序在主线程运行
- #16 3Sum Closest
- 定义一个教师类和一个学生类 第七题
- 堆和栈的区别
- hdu 1237(中缀表达式转后缀并计算)
- hihocoder 1166 期望dp+高斯消元
- 研发管理05:项目管理经验总结
- POJ 2390 解题报告