概念
啥是线性表?
线性表是具有相同特性的数据元素的一个有限序列
(a1,a2,...,ai-1,ai,ai+1,an)
a1:起始结点(线性起点)
an:终端结点(线性终点)
对于其中一个元素ai,ai-1称作`ai的直接前驱`,ai+1称作`ai的直接后继`
n=0时称为空表(n为元素个数,即表长)
那什么是顺序存储?
顺序表就是把逻辑相邻的数据元素存储在物理也相邻的存储单元中的存储结构
实现
cpp
#include<stdio.h>
#include<stdlib.h>
#define INIT_SIZE 100 //定义初始化长度
typedef int typelem;
typedef struct {
int* pList; //元素存放首地址
int length; //元素长度
int listsize; //表最大长度
}SqList;
// 初始化顺序表
void initList(SqList &L) {
L.pList = (typelem*)malloc(INIT_SIZE * sizeof(typelem)); //申请内存空间
L.length = 0; //初始化空表
L.listsize = INIT_SIZE; //表最大长度
}
// 插入数据
void insert(typelem e,SqList &L,int n) {
if (n<=L.length || L.length<L.listsize) {
for (int i = L.length - 1; i >= n - 1;i--) {
L.pList[i + 1] = L.pList[i];
}
L.pList[n - 1] = e;
L.length++;
}
else {
printf("插入失败");
}
}
void printList(SqList &L) {
for (int i = 0; i < L.length; i++) {
printf("%d\n",L.pList[i]);
}
}
int main() {
SqList L;
initList(L);
insert(1,L,1); //插入元素(要插入的元素,插入在哪张表,插入在第几个)
insert(2,L,1);
printList(L); //打印表
}