关于顺序表的详细了解请见博主的另一篇博客,本文旨在对顺序表进行应用,采用C语言编写。
一、驱动层
1.1 SeqList.h
#pragma once
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
#include"Contact.h"
#include<string.h>
typedef peoInfo SLDataType;
typedef struct SeqList
{
SLDataType* arr;
int size;
int capacity;
}SL;
//顺序表初始化
void SLInit(SL* ps);
//顺序表的销毁
void SLDestroy(SL* ps);
//顺序表的打印
void SLPrint(SL s);
//头部插入
void SLPushFront(SL* ps, SLDataType x);
//尾部插入
void SLPushBack(SL* ps, SLDataType x);
//头部删除
void SLPopFront(SL* ps);
//尾部删除
void SLPopBack(SL* ps);
//指定位置之前插入数据
void SLInsert(SL* ps, int pos, SLDataType x);
//指定位置擦除数据
void SLErase(SL* ps, int pos);
1.2 SeqList.c
#include"SeqList.h"
//顺序表初始化
void SLInit(SL* ps)
{
ps->arr = NULL;
ps->capacity = 0;
ps->size = 0;
}
//顺序表的销毁
void SLDestroy(SL* ps)
{
assert(ps);
if (ps->arr != NULL)
{
free(ps->arr);
}
ps->capacity = 0;
ps->size = 0;
}
void SLCheck(SL* ps)
{
assert(ps);
if (ps->capacity == ps->size)
{
int newCapacity = 0;
if (ps->capacity == 0)
{
newCapacity = 4;
}
else
{
newCapacity = 2 * ps->capacity;
}