C实现动态数组
来源:互联网 发布:洋葱新闻 知乎 编辑:程序博客网 时间:2024/05/22 06:59
头文件:
上述代码没有进行内存释放。。欢迎大家自己添加
#ifndef DYNAMIC_H_INCLUDED#define DYNAMIC_H_INCLUDED#include <stdio.h>#include <stdlib.h>struct data{int *p;//动态数组头指针int length;//动态数组长度};void inidata(struct data *pd);//初始化void adddata(struct data *pd,int num);//动态增加元素void addarray(struct data *pd,int *pp,int len);//动态增加数组void disdata(struct data *pd);//显示#endif // DYNAMIC_H_INCLUDED
源文件:
/***使用的是GCC编译器,个别变量定义有区别***/#include <stdio.h>#include <stdlib.h>#include "dynamic.h"int i;int j;int k;void inidata(struct data *pd){ pd->p = NULL;//动态数组头指针 pd->length = 0;//动态数组长度}void adddata(struct data *pd,int num){ if(pd -> p == NULL) { pd->p = (int *)malloc(sizeof(int)); pd->length+=1; pd->p[pd -> length - 1] = num; } else { pd -> p = (int *)realloc(pd -> p,(pd->length + 1)*sizeof(int)); pd -> length+=1; pd -> p[pd -> length - 1] = num; }}void addarray(struct data *pd,int *pp,int len){ if(pd ->p == NULL) { pd -> p = (int *)malloc(sizeof(int)*len); for(i=0;i < len;i++) { pd -> p[pd -> length + i] = pp[i]; } pd ->length += len; } else { pd -> p = (int *)realloc(pd -> p,(pd->length+len)*sizeof(int)); for(j=0;j<len;j++) { pd -> p[pd -> length + j] = pp[j]; } pd -> length+=len; }}void disdata(struct data *pd){ if(pd ->p == NULL) { printf("数组为空\n"); } else { for(k=0;k < pd->length;k++) { printf("第%d个元素=%d\n",k,pd->p[k]); } }}int main(){ int numa[10]={0,1,2,3,4,5,6,7,8,9}; struct data data1; inidata(&data1); addarray(&data1,numa,10); disdata(&data1); adddata(&data1,10); adddata(&data1,20); adddata(&data1,30); adddata(&data1,30); disdata(&data1); adddata(&data1,50); adddata(&data1,60); disdata(&data1); return 0;}
上述代码没有进行内存释放。。欢迎大家自己添加
0 0
- C实现动态数组
- 动态数组C语言实现
- C语言实现动态数组
- 动态数组的 C 实现
- C/C++实现动态数组
- C语言实现动态数组
- c语言实现动态数组
- 链表实现动态数组C源代码
- C/C++语言实现动态数组
- C/C++语言实现动态数组
- C语言动态数组的完整实现
- C语言实现 vector( 动态数组)。
- C语言堆栈实现( 动态数组 )
- C语言队列实现( 动态数组 )
- C语言实现 vector( 动态数组)
- C语言动态数组的完整实现
- C语言 -----动态数组算法实现
- C语言中动态数组的实现
- 创建Material Design风格的Android应用--应用主题
- 高效使用Bitmaps(二) 后台加载Bitmap
- UVa 10664 - Luggage
- 将win7笔记本电脑变身WiFi热点,让手机、ipad共享上网!
- 高效使用Bitmaps(一) 大Bitmap的加载
- C实现动态数组
- LeetCode-ZigZag Conversion
- opencv 数字图象处理 镜像变换 cvFlip()
- binder设计与实现
- JavaScript 数组+while循环
- 为什么要fork两次来避免产生僵尸进程
- Xcode 6中添加预编译pch文件
- MySQL学习系列15:优化
- Linux文件,文件描述符以及dup()和dup2()