码迷,mamicode.com
首页 > 其他好文 > 详细

数据结构(二) 线性表-2

时间:2020-06-11 21:44:20      阅读:51      评论:0      收藏:0      [点我收藏+]

标签:就是   数据结构   邻居   lis   概念   关系   链式存储结构   特点   顺序存储结构   

1.顺序存储结构不足的解决办法

线性表的顺序存储结构就是插入和删除时,需要移动大量元素

问题的根源在于:相邻的两个数据元素的存储位置具有邻居关系

插入操作,为了保持原有的数据元素的相邻关系,插入位置之后的数据元素以此往后移动。

删除操作,所删元素留下的空隙自然需要你补,数据元素要往前移动。

解决办法:采用链式存储结构

2.链式存储结构定义

2.1 几个重要概念

链式存储结构的特点:用一组任意存储单元存储线性表的数据元素

链式存储结构定义:每个元素包含一个数据域和一个指针域。指针域指向其直接后继元素。

结点:一个数据域,一个指针域,指针域指向另一个节点

链表:N个节点构成

单链表:线性表由由节点构成并且,每个节点只包含一个指针域

头指针:表的第一个节点的存储位置

头节点:单链表第一个节点前附设一个节点,为头节点,头节点可以不存储任何信息,也可以存储如线性表的长度等附加信息,头节点的指针域存储第一个节点的指针

2.2 头指针和头节点

这两个概念容易混淆。需要加以区分

头指针:

  1. 头指针是 链表指向第一个节点的指针,若链表由头节点,则为指向头节点的指针
  2. 头指针具有标识作用,常用头指针冠以链表的名字
  3. 无论链表是否为空,头指针均不为空,头指针是链表的必要元素

头节点

  1. 头节点是为了操作的统一和方便设立的,放在第一个元素之前,其数据域一般无意义(也可存放链表长度)
  2. 有了头节点,对第一元素节点前的插入和删除第一个节点,其操作和其他节点统一
  3. 头节点不一定是链表的必要元素

2.3 单链表的存储结构定义

typedef int ElemType;/* ElemType类型根据实际情况而定,这里假设为int */

typedef struct Node
{
    ElemType data;
    struct Node *next;
}Node;
typedef struct Node *LinkList; 

数据结构(二) 线性表-2

标签:就是   数据结构   邻居   lis   概念   关系   链式存储结构   特点   顺序存储结构   

原文地址:https://www.cnblogs.com/chance0x1/p/13096013.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!