您的位置:首页 > 理论基础 > 数据结构算法

数据结构之线性表

2016-03-24 09:15 337 查看
读自《数据结构(C语言版)》严蔚敏 吴伟民 清华大学出版社

线性表

线性表的顺序表示和实现

线性表的顺序表示指的是用一组地址连续的存储单元依次存储线性表的数据元素。因此只要确定了存储线性表的起始位置,线性表中的任一数据元素都可随机存取,所以线性表的顺序存储结构是一种随机存取的存储结构。通常用数组来描述数据结构中的顺序存储结构

对于线性表的长度可变的情况下,利用动态分配的一维数组

#define LIST_INIT_SIZE 100 //线性表存储空间的初始分配量
#define LISTINCREMENT   10 //线性表存储空间的分配增量
typedef struct{
type *elem; //存储空间基址
int length; //当前长度
int listsize; //当前分配的存储容量(以sizeof(type)为单位)
}Sqlist


线性表的链式表示和实现

用一组任意的存储单元存储线性表的数据元素(这组存储单元可连续的也可非连续)

线性表的单链表存储结构

typedef struct LNode{
type data;
struct LNode *next;
}LNode, *LinkList;


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

#define MAXSIZE 1000
typedef struct{
type data;
int cur;
}component, SLinkList[MAXSIZE];


循环链表

特点是表中最后一个结点的指针域指向头结点,整个链表形成一个环。循环链表的操作和线性链表的基本一致,差别仅在于算法中的循环条件不是p或p->next是否为空,而是它们是否等于头指针。

双向链表

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

typedef struct DuLNode{
type data;
struct DuLNode *prev;
struct DuLNode *next;
}DuLNode, *DuLinkList;


带头结点的线性链表类型

typedef struct LNode{
type data;
struct LNode *next;
}*Link, *Position;

typedef strutc{
Link head, tail;//分别指向线性链表中的头结点和最后一个结点
int len;//指示线性链表中数据元素的个数
}LinkList;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: