几种常见的线性表存储结构
1.线性表的的动态分配顺序存储结构
1 #define LIST_INIT_SIZE 100 //线性表存储空间的初始分配量 2 #define LISTINCREMENT 100 //线性表存储空间的分配增量 3 typedef struct { 4 ElemType *elem; //存储空间基址 5 int length; //当前长度 6 int size; //当前分配的存储容量 7 }SqList; //动态分配 + 顺序存储结构
2.线性表的单链表存储结构
1 typedef struct LNode{ //结点类型 2 ElemType data; //数据域 3 struct LNode *next; //指针域 4 }*Link; 5 typedef struct { //链表类型 6 Link head, tail; //分别指向线性链表的头结点和最后一个结点 7 int len; //指示线性链表中数据元素的个数 8 }LinkList;
头指针:指示链表中第一个结点的存储位置(LNode *类型)
头结点:单链表的第一个结点前附设一个结点(数据域可存长度 LNode类型)
首元结点:第一个结点
3.线性表的静态单链表存储结构
1 #define MAXSIZE 1000 //链表的最大长度 2 typedef struct{ 3 ElemType data; 4 int cur; 5 }Component, SLinkList[MAXSIZE];
需要用户自己实现malloc和free函数,将所有未使用过的和被删除的结点用游标链成一个备用链表
4.线性表的双向链表存储结构
1 typedef struct DulNode{ 2 ElemType data; 3 struct DulNode *prior; 4 struct DulNode *next; 5 }*Dulink; 6 typedef struct { //链表类型 7 Link head, tail; //分别指向线性链表的头结点和最后一个结点 8 int len; //指示线性链表中数据元素的个数 9 }DulinkList;
2015-06-27 21:21:29
posted on 2015-06-27 21:24 Sunshine_Lin 阅读(741) 评论(0) 编辑 收藏 举报