迪拉多是什么牌子:动态数组是什么样子的啊

来源:百度文库 编辑:高考问答 时间:2024/05/10 11:13:11
谁可以找一个C语言的有动态数组的程序啊?当然最好是简单些了

c语言实现动态数组

#include <stdio.h>
#include <stdlib.h>
#define Flex(T) \
typedef struct {T *a; int m,n;} Flex##T; \
Flex##T initialFlex##T(void) { \
Flex##T v = {0,0,0}; return v; \
} \
void freeFlex##T(Flex##T A) { \
free(A.a); \
} \
\
int lengthFlex##T(Flex##T A) { \
return A.n; \
} \
\
T* arrayFlex##T(Flex##T A) { \
return A.a; \
} \
\
T getFlex##T(Flex##T A,int i) { \
if (0<=i && i<A.n) return A.a[i]; \
else abort(); \
} \
\
Flex##T putFlex##T(Flex##T A,int i,T v) { \
if (i<0) abort(); \
if (i>=A.m) { \
A.m = 2*i+1; A.a = (T*)realloc(A.a,A.m*sizeof(T)); \
if (!A.a) abort(); \
} \
if (i>=A.n) A.n = i+1; \
A.a[i] = v; \
return A; \
}
Flex(char)
int main()
{
Flexchar text = initialFlexchar();
int ch;
int len;
int i;
while ((ch=fgetc(stdin)))
{
len = lengthFlexchar(text);
text = putFlexchar(text,len,ch);
for(i = 0; i < len; i++)
printf("%c",getFlexchar(text,i));
printf("\n");
}
return 1;
}