数据结构之线性表

来源:互联网 发布:java将图片转成base64 编辑:程序博客网 时间:2024/06/09 17:39

读自《数据结构(C语言版)》严蔚敏 吴伟民   清华大学出版社

  1. 线性表

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

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

#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 1000typedef 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;
0 0
原创粉丝点击