• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

Sunshine_Lin

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

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

简要的介绍了几种线性表的实现

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  阅读(766)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3