#include<stdio.h>
#include <stdlib.h>
#include <string.h>
#define INITIAL_CAP 50
#define INCREMENT_SIZE 10
typedef double elem;
typedef struct
{
elem* s;
int cap; //容器容量
int len; //容器里长度
}vec;
//初始化
void init(vec* p)
{
p->s=malloc(INITIAL_CAP*sizeof(elem));
p->cap=INITIAL_CAP;
p->len=0;
}
//销毁
void destroy(vec* p)
{
free(p->s);
p->cap=0;
p->len=0;
free(p);
}
//尾插
void push_back(vec* p,elem data)
{
if(p->len==p->cap)
{
p->s=realloc(p->s,INCREMENT_SIZE*sizeof(elem));
p->cap=p->cap+INCREMENT_SIZE;
}
p->s[len]=data;
p->len++;
}
//任意位置插入
void insert(vec* p,int pop,elem data)
{
if(p->cap==p->len)
{
p->s=realloc(p->s,INCREMENT_SIZE*sizeof(elem));
p->cap=p->cap+INCREMENT_SIZE;
}
int i;
for(i=len-1;i>=pop;--i)
{
p->s[i+1]=p->s[i];
}
p->s[i+1]=data;
p->len++;
}
//删除
void rease(vec* p,int pop,elem data)
{
int i=pop;
for(i;i<p->len-1;++i)
{
p->s[i]=p->s[i+1];
}
p->len--;
}
//判空
int empty(vec* p)
{
return !(p->len);
}
我只写了部分,大致就这么回事