1、数据结构的最简单的顺序表。
顺序表功能就是插入数据、删除数据、打印数据。
其他函数就是在这几个的基础上修改
第一步:插入数据
首先先创建一个顺序表并且初始化
顺序表就相当于是一个数组。
初始化好了之后就是插入数据了
然后删除数据
这应该是最简单的一步了。
打印数据
完整代码:
//顺序表的基本实现
//定义一个结构体
typedef struct SLlist
{
int* a;//数组
int size;//个数
int capacity;//容量
}SLlist;
void SLlistInit(SLlist* ps)//用一级指针接收
{
ps->a = NULL;//数组为空
ps->size = 0;//个数为0
ps->capacity = 0;//容量为0
}
//插入数据
void SLlistPushBack(SLlist* ps,int x)
{
//判断是否要扩容
if (ps->size == ps->capacity)
{
int newcapacity = ps->capacity == 0 ? 4 : ps->capacity * 2;
//如果是0则开辟四个空间 不是的话就按原来容量两倍开辟
SLlist* temp = malloc(sizeof(SLlist));
ps->a = temp;//将temp给给ps
ps->capacity = newcapacity;
}
ps->a[ps->size] = x;
ps->size++;
}
//打印顺序表
void SLlistprint(SLlist* ps)
{
if (ps->size==0)
{
printf("NULL\n");
}
else
{
for (int i = 0; i < ps->size; i++)
{
printf("%d ", ps->a[i]);
}
printf("\n");
}
}
//删除
void SLlistPopBack(SLlist* ps)
{
assert(ps);//判断是否为空
//ps->a[ps->size - 1] = 0;//将该位置的元素赋值为0
ps->size--;
}
void testSLlist()
{
SLlist ps;//创建一个顺序表
SLlistInit(&ps);//顺序表的初始化
SLlistPushBack(&ps, 1);//插入数据
//SLlistprint(&ps);//打印顺序表
SLlistPopBack(&ps);//删除
SLlistprint(&ps);//打印顺序表
}
int main()
{
testSLlist();
return 0;
}