三个文件
第一个文件
test.c
#include <stdio.h>
#include "seqList.h"
void testSeqList()
{
SL sl;
sepListInit(&sl);//结构体的初始化
//插入数据
int n = 0;
scanf("%d", &n);
int i = 0;
for (i = 0; i < n; i++)
{
int m = 0;
scanf("%d", &m);
sepListPushBack(&sl, m);
}
sepListPrint(&sl);
sepListFree(&sl);//动态内存的释放
}
int main()
{
testSeqList();
return 0;
}
第二个文件
seqList.h
#pragma once
#define N 1000
typedef int dataType;
// 动态顺表
typedef struct sepList
{
dataType* pstr;
int size; // 存储的数据大小
int capacity; // 数组的空间容量大小
}SL;
// 接口函数
// 顺序表的初始化
void sepListInit(SL* pa);
//顺序表的打印
void sepListPrint(SL* pa);
//顺序表的动态内存的释放
void sepListFree(SL* pa);
// 顺序表的头插
void sepListPushFront(SL* pa, dataType n);
// 顺序表的尾插
void sepListPushBack(SL* pa, dataType n);
// 顺序表的的头删
void sepListPopFront(SL* pa);
//顺序表的尾删
void sepListPopback(SL* pa);
第三个文件
seqList.c
#include "seqList.h"
#include <stdlib.h>
#include <stdio.h>
void sepListInit(SL* pa)
{
pa->pstr = NULL;
pa->size = 0;
pa->capacity = 0;
}
void sepListPushBack(SL* pa, dataType n)
{
if (pa->size == pa->capacity)
{
int newCapacity = pa->capacity == 0 ? 4 : pa->capacity * 2;
//内存扩容为一般去2倍数
dataType* ret = (dataType*)realloc(pa->pstr, newCapacity * sizeof(dataType));
if (NULL != ret)
{
pa->pstr = ret;
pa->capacity = newCapacity;
}
}
pa->pstr[pa->size] = n;
pa->size++;
}
void sepListPrint(SL* pa)
{
int i = 0;
for (i = 0; i < pa->size; i++)
{
printf("%d ", pa->pstr[i]);
}
}
void sepListFree(SL* pa)
{
free(pa->pstr);
pa->pstr = NULL;
pa->size = pa->capacity = 0;
}