#include<stdio.h>
#include<stdlib.h>
#define ERROR 0
#define OK 1
typedef struct Vector//结构体建立
{
int size, length;
int* data;
}Vector;
void init(Vector* vector, int size)//生成动态顺序表,并设置为NULL
{
vector->size = size;
vector->length = 0;
vector->data = (int*)malloc(sizeof(int) * size);
}
void expand(Vector* vector)//扩展顺序表
{
int* oid_data = vector->data;//设置新的指针指向原来的顺序表o
vector->size = vector->size * 2;//扩展原来的顺序表为之前的两倍
vector->data = (int*)malloc(sizeof(int) * vector->size);//为数据申请内存空间
for (int i = 0;i < vector->length;++i)
{
vector->data[i] = oid_data[i];
}
free(oid_data);//释放缓存
}
int insert(Vector* vector, int loc, int value)//向顺序表中插入数据
{
if (loc<0 || loc>vector->length)//判断插入位置
{
return ERROR;
}
if (vector->length >= vector->size)
{
expand(vector);
}
for (int i = vector->length;i > loc;--i)//--i和i--
{
vector->data[i] = vector->data[i - 1];
}
vector->data[loc] = value;//将数据元素插入顺序表
vector->length++;
return OK;
}
void clear(Vector* vector)//清除内存
{
free(vector->data);
free(vector);
}
int main()
{
Vector* a = (Vector*)malloc(sizeof(Vector));
init(a, 100);
printf("%d\n", insert(a, 1, 0));
printf("%d\n", insert(a, 0, 1));
printf("%d\n", insert(a, 1, 1));
printf("%d\n", insert(a, 3, 2));
printf("%d\n", insert(a, 4, 3));
printf("%d\n", insert(a, 4, 2));
clear(a);
return 0;
}
2021-03-25
最新推荐文章于 2022-12-02 13:55:16 发布