几种常见的线性表存储结构

1.线性表的的动态分配顺序存储结构

#define LIST_INIT_SIZE 100  //线性表存储空间的初始分配量
#define LISTINCREMENT 100   //线性表存储空间的分配增量
typedef struct {
    ElemType *elem;     //存储空间基址
    int length;         //当前长度
    int size;           //当前分配的存储容量
}SqList;    

2.线性表的单链表存储结构

typedef struct LNode{   //结点类型
    ElemType data;      //数据域
    struct LNode *next; //指针域
}*Link;
typedef struct {        //链表类型
    Link head, tail;    //分别指向线性链表的头结点和最后一个结点
    int len;            //指示线性链表中数据元素的个数
}LinkList;

头指针:指示链表中第一个结点的存储位置(LNode *类型)
头结点:单链表的第一个结点前附设一个结点(数据域可存长度 LNode类型)
首元结点:第一个结点

3.线性表的静态单链表存储结构

#define MAXSIZE 1000    //链表的最大长度
typedef struct{
    ElemType data;
    int cur;
}Component, SLinkList[MAXSIZE];

需要用户自己实现malloc和free函数,将所有未使用过的和被删除的结点用游标链成一个备用链表

4.线性表的双向链表存储结构

typedef struct DulNode{
    ElemType data;
    struct DulNode *prior;
    struct DulNode *next;
}*Dulink;
typedef struct {        //链表类型
    Link head, tail;    //分别指向线性链表的头结点和最后一个结点
    int len;            //指示线性链表中数据元素的个数
}DulinkList;
相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页