线性表:零个或多个元素的有限序列,用于存储数据的一种方式
常做操作:
初始化
判断是否为空
插入元素
删除元素
返回元素的个数
顺序存储
顺序存储的本质为数组,其数据在内容中是有顺序的进行存储
缺陷:长度受到限制,其存储的数据位置是连续的
1、创建结构体
#define MAXSIZE 1000
#define ERROR -1
#include <stdbool.h>
typedef struct Node {
int Data[MAXSIZE];
int size;
}*LNode;
typedef LNode List;
2、初始化列表
//初始化一个列表
List MakeEmpty()
{
List L;
L = (List)malloc(sizeof(struct Node));
L->size = -1;
return L;
}
3、元素的查找
//查找元素
int Find(List L, int X)
{
int i=0;
while (i < L->size < MAXSIZE && L->Data[i] != X)
{
i++;
}
if (i > L->size) return ERROR;
else
return i;
}
4、插入元素
//插入元素
bool Insert(List L, int i, int X)
{
int j;
if (L->size == MAXSIZE)
{
printf("表满");
}
if (i<1 || i>L->size + 2)
{
printf("输入有误");
return false;
}
for (j = L->size; j > i - 1; j--)
{
L->Data[j] = L->Data[j - 1];
}
L->Data[i - 1] = X;
L->size++;
return true;
}
5、删除元素–根据序号
//删除---根据序列
bool Delete(List L, int i)
{
int j;
if (i<1 || i>L->size + 1)
{
printf("序列错误");
return false;
}
for (j = i-1; j < L->size; j++)
{
L->Data[j] = L->Data[j+1];
}
L->size--;
return true;
}
链式存储
单向链表
1、建立结构体
存储结点
typedef struct LNode* PtrTolNode;
struct LNode {
int Data;
PtrTolNode Next;
};
typedef PtrTolNode Position;</