顺序表
顺序表
静态顺序表
#include
#define MaxSize 10//定义最大长度
typedef struct {
int data[MaxSize];//定义静态数组
int length;//顺序表当前长度
}SqList;
void InitList(SqList& L) {
for (int i = 0;i < MaxSize;i++) {
L.data[i] = 0;//所以数据初始值为0
}
L.length = 0;//顺序表初始长度为0
}
int main() {
SqList L;//声明顺序表
InitList(L);//调用函数,初始化顺序表
return 0;
}
动态分配
#include
#include
#define InitSize 10;
//定义顺序表
typedef struct {
int *data; //动态数组指针
int MaxSize; //当前最大容量
int length; //当前长度
}SeqList;
void InitList(SeqList &L) {
L.data = (int*)malloc((L.MaxSize) * sizeof(int));//开辟容量为MaxSize的空间
L.length = 0;//初始化长度
L.MaxSize = InitSize;//最大容量为10
}
//增加容量
void IncreseSize(SeqList& L, int len) {
int* p = L.data;//将数组首项地址赋予*p
L.data = (int*)malloc((L.MaxSize + len) * sizeof(int));//增加len*sizeof(int)长度空间
for (int i = 0;i < L.length;i++) {
L.data[i] = p[i];//将L.data数组中的值转移到新的空间
}
L.MaxSize = L.MaxSize + len;//最大长度增加
free(p);//释放旧存储空间
}
int main() {
SeqList L;
InitList(L);
for (int i = 0;i < L.MaxSize;i++) {
L.data[i] = 1;
}
IncreseSize(L, 5);//5=len
return 0;
}
插入
#include
#define MaxSize 10//定义最大长度
typedef struct {
int data[MaxSize];//定义静态数组
int length;//顺序表当前长度
}SqList;
bool ListInsert(SqList &L, int i, int e) {
if (i<1 || i>L.length)//判断插入位置是否合法
return false;
if (L.length >= MaxSize)//同上
return false;
for (int j = L.length;j >= i;j--)
L.data[j] = L.data[j - 1];//将i后元素后移一位
L.data[i - 1] = e;//插入e
L.length++;//使顺序表当前长度加一
return true;
}
void InitList(SqList& L) {
for (int i = 0;i < MaxSize;i++) {
L.data[i] = 0;//所以数据初始值为0
}
L.length = 0;//顺序表初始长度为0
}
int main() {
SqList L;
InitList(L);
//插入元素
ListInsert(L, 3, 3);//在第三个位置插入3
return 0;
}
单链表
1 | 基本结构 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 xunyue!