简单概念部分
线性表的定义:
具有相同特性数据元素的一个有限序列
线性表的两种储存结构:
顺序表(说白了就是数组)和链表。
两种存储结构的简单比较:
顺序表:
1、随机访问特性,即只要知道数组下标就可以访问顺序表中的任意一个元素;
2、要求占用连续的存储空间,只要分配好了存储空间,就不能再进行改变;
3、顺序表进行插入/删除操作时需要移动多个元素。
链表:
1、不支持随机访问,若要访问后面的数据,只能从第一个开始依次查找;
2、链表的储存空间利用率比顺序表稍低一些,因为每个结点还需要划出一部分空间用于存储下一个结点位置的指针;
3、链表支持储存空间的动态分配;
4、在链表中进行插入/删除操作时无需移动元素。
链表的五种形式:
单链表(带头节点和不带头节点)、双链表、循环单链表、循环双链表、静态链表
伪代码部分
线性表的结构体定义:
//顺序表的结构体定义
typedef struct
{
int data[maxsize];
int length;
}Sqlist;
//顺序表的普通定义 这两句就定义了一个长度为length,表内元素为整数的顺序表
int data[maxsize];
int length;
//单链表结点定义
typedef struct LNode
{
int data;
struct LNode *next;
}LNode;
//双链表的节点定义
typedef struct DLNode
{
int data;
struct DLNode *prior;
struct DLNode *next;
}DLNode;
//定义结点代码 给head分配了一个LNode型空间
LNode *head = (LNode *)malloc(sizeof(LNode));