唐山建设网站的网站,青海网站建设企业,简述建站流程,效果图工作室首先我们要知道什么是顺序表: 顺序表的底层结构是数组,对数组的封装,实现了常⽤的增删改查等接⼝,顺序表分为静态顺序表(使⽤定⻓数组存储元素)和动态顺序表(按需申请) 静态顺序表缺点: 空间给少了不够⽤,给多了造成空间浪费 拿出来我之前以及写好了的顺序表的代码:…首先我们要知道什么是顺序表: 顺序表的底层结构是数组,对数组的封装,实现了常⽤的增删改查等接⼝,顺序表分为静态顺序表(使⽤定⻓数组存储元素)和动态顺序表(按需申请) 静态顺序表缺点: 空间给少了不够⽤,给多了造成空间浪费 拿出来我之前以及写好了的顺序表的代码: 具体代码如下:
SeqLisr.h
#pragma once #includestdio.h
#includeassert.h
#includestdlib.h typedef int SLDataType; typedef struct SeqList
{
SLDataType* arr;//
int size;// 有效数据个数
int capacity; // 空间容量
}SL; void SLInit(SL* ps);//初始化 void SLDestroy(SL* ps);//销毁 void SLPrint(SL* ps);//测试 void SLCheckCapacity(SL* ps);//扩容 void SLPushBack(SL* ps, SLDataType x);// 尾部插入 void SLPopBack(SL* ps); //尾部删除 void SLPushFront(SL* ps, SLDataType x);//头部插入 void SLPopFront(SL* ps);//头部删除 void SLInsert(SL* ps, int pos, SLDataType x); // 指定位置之前插入数据 void SLErase(SL* ps, int pos);//指定位置之前删除数据 int SLFind(SL* ps, SLDataType x);//指定位置查找数据 SeqLisr.c #define _CRT_SECURE_NO_WARNINGS 1
#include"SeqLisr.h" //初始化
void SLInit(SL *ps) {
ps-arr = NULL;
ps-capacity = ps-size = 0;
} //销毁
void SLDestroy(SL* ps) {
assert(ps);
if (ps-arr) {
free(ps-arr); }
ps-arr = NULL;
ps-capacity = ps-size = 0;
} //扩容
void SLCheckCapacity(SL* ps) { if (ps-size == ps-capacity) {
int newcapacity = ps-capacity == 0 ? 4 : 2 * ps-capacity;
SLDataType* tmp = (SLDataType*)realloc(ps-arr, newcapacity * sizeof(SLDataType));
if (tmp == NULL) {
perror("tmp");
exit(1);
}
ps-arr = tmp;
ps-capacity = newcapacity;//把他变成扩容之后的新内存
}
} // 尾部插入
void SLPushBack(SL* ps, SLDataType x){ assert(ps); //空间不够,扩容
SLCheckCapacity(ps);
//空间足够,直接插入
ps-arr[ps-size] = x;
ps-size++;
} //测试打印
void SLPrint(SL* ps) {
for (int i = 0; i ps-size; i++) {
printf("%d ", ps-arr[i]);
}
printf("\n");
} //头部插入
void SLPushFront(SL* ps, SLDataType x) {
assert(ps);