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

来源:互联网 发布:java高并发orm 编辑:程序博客网 时间:2024/06/13 03:25

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;
0 0