#include <stdio.h>
#include <stdlib.h>
#include <memory.h>
#define datatype int
struct array
{
datatype *pstart;
//数组首地址
int length;
//长度
int sortstat;
//有序或者无序 0 无序 1 有序
};
void init(
struct array *
parr);
void initwithdata(
struct array *
parr,datatype data);
void initwitharray(
struct array *parr,datatype *pdata,
int datalength);
void show(
struct array *
parr);
void addobject(
struct array *
parr,datatype data);
void addobjects(
struct array *parr,datatype *pdata,
int datalength);
void main()
{
struct array mydata;
int a[
10] = {
1,
2,
3,
4,
5,
6,
7,
8,
9,
10};
int b[
6] = {
11,
12,
13,
14,
15,
16};
int c[
5] = {
17,
18,
19,
20,
21};
initwitharray(&mydata,a,
10);
show(&
mydata);
addobjects(&mydata,b,
6);
show(&
mydata);
addobjects(&mydata,c,
5);
show(&
mydata);
}
void init(
struct array *
parr)
{
parr->pstart =
NULL;
parr->length =
0;
parr->sortstat =
0;
}
void initwithdata(
struct array *
parr,datatype data)
{
parr->pstart=(datatype *)(
sizeof(datatype));
*(parr->pstart) =
data;
parr->length =
1;
parr->sortstat =
0;
}
void initwitharray(
struct array *parr,datatype *pdata,
int datalength)
{
parr->pstart= (datatype *)malloc(
sizeof(datatype)*
datalength);
memcpy(parr->pstart,pdata,
sizeof(datatype)*
datalength);
parr->length =
datalength;
parr->sortstat =
0;
}
void show(
struct array *
parr)
{
if(parr == NULL || parr->pstart == NULL || parr->length ==
0)
{
printf("没有");
return;
}
else
{
printf("\n数组此时状态\n");
for(
int i=
0;i<parr->length;i++
)
{
printf("M",parr->
pstart[i]);
}
}
printf("\n");
}
void addobject(
struct array *
parr,datatype data)
{
if(parr !=
NULL)
{
if(parr->pstart == NULL || parr->length ==
0)
{
initwithdata(parr,data);
}
else
{
parr->pstart = (datatype *)realloc(parr->pstart,parr->length*
sizeof(datatype)+
sizeof(datatype));
parr->pstart[parr->length] =
data;
parr->length++
;
}
}
else
{
printf("%s",
"addobject error");
}
}
void addobjects(
struct array *parr,datatype *pdata,
int datalength)
{
if(parr !=
NULL)
{
if(parr->pstart == NULL || parr->length ==
0)
{
initwitharray(parr,pdata,datalength);
}
else
{
parr->pstart = (datatype *)realloc(parr->pstart,parr->length*
sizeof(datatype)+datalength*
sizeof(datatype));
memcpy(parr->pstart+parr->length,pdata,datalength*
sizeof(datatype));
parr->length +=
datalength;
}
}
else
{
printf("%s",
"addobjects error");
}
}
转载于:https://www.cnblogs.com/xiaochi/p/5385785.html
相关资源:c 数组练习题