线性表分为:顺序存储结构和连存储结构

顺序存储结构的优点:

1.空间利用率高,几乎不需要额外的空间开销.

2.数据的逻辑结构和物理结构完全一致.

3.结点地址计算的时间和线性表的规模大小无关.

4.可以用一维数组实现存储.

但是有两个致命的缺点:

1.顺序存储结构的存储空间是静态分配,必须有足够大的连续存储空间,如果不能则无法实现存储.在建立顺序表时,存储空间大小有时无法确切估计,估计过大回会使空闲区段的部分空间长期闲置,估计过小则会在操作中因空间不够而产生溢出.

2.插入操作和产出操作在大多数情况下,引起大量节点的频繁移动,降低了算法的时间效率.

因此:顺序存储结构 比较适合规模较小,长度变化不大且不很频繁的线性表存储实现.

克服线性表顺序存储结构的方法采用链表存储结构,链表存储结构的存储分配方式灵活,有效性好.用链表存储结构存储的线性表称为"链表".

链表分为:单链表,循环链表和双向链表.

下面就介绍一下单链表的基本操作.

链存储结构的存储分配以节点为单位,每个节点由节点数据和指针构成.

单链表的结点通常定义成两个域:结点数据和指针域.

指向首节点的指针称为头指针,存放在一个已命名的的头指针变量中,例如:H.头指针变量名就是单链表名,

typedef struct node{

int data;

struct node *next;

}LINKLIST;

这个结点类型的两个域分别命名为data何next.

理解这个几个常用的概念

指针:结点的存储地址

指针变量:存放指针的变量,例如:p,其值是指针

指针所指结点:以该指针为地址进行存储的结点,引用结点就是获得指向它的指针.

假定p是指向某结点的指针变量,在非形式语言中 ,通过p引用指向的结点,表示为(p),结点域的引用方式表示为"域名(指针)",例如:data(p)表示引用结点(p)的数据域,next(p)表示引用结点(p)的指针域.在C语言中,结点的引用方式是*p;域引用方式是p->data,p->next.

结点域:结点中的数据(自己的理解)

为了便于操作单链表,在单链表的首节点前增加一个附加结点,成为头结点,并且让头指针始终指向头结点,这种形式的单链表成为带头结点的单链表,

头结点的数据域不存放任何结点数据,必要时可以存放特殊意义的附加信息,例如标记性信息,计数信息等.头结点的指针域存放首节点的指针,当链表为空时,首结点指针的值为空(也就是头结点的指针域为NULL).

以上就是对单链表的定义和相关概念的解释.

此文介绍来自<>一书的定义.也是学习数据结构的开始,如果大家有好的建议和好的相关资料,希望大家给提出来,共同进步.

线性单链表存储结构c语言代码,单链表定义-(线性表的链表存储结构)相关推荐

  1. c语言字符就地逆置,高手看看我的C语言代码单链表实现就地逆置

    高手看看我的C语言代码单链表实现就地逆置 单链表实现就地逆置#include #include struct type{ int date; struct type * next;}first;int ...

  2. 国家语言,语言代码,locale id对应表

    国家语言,语言代码,locale id对应表.比如 en_US对应的id为1033, 中文的locale=zh_CN,id=2052. Locale Language code LCID string ...

  3. f49.in index.php,国家语言,语言代码,locale id对应表

    国家语言,语言代码,locale id对应表.比如 en_US对应的id为1033, 中文的locale=zh_CN,id=2052. Locale Language code LCID string ...

  4. c语言给定一个单链表输入k,C语言实现单链表(不带头结点)的基本操作

    链表在数据结构和算法中的重要性不言而喻.这里我们要用C来实现链表(单链表)中的基本操作.对于链表的基本概念请参考<数据结构与算法之链表>这篇博客.示例代码上传至 https://githu ...

  5. c语言double数据存储形式,C语言 float、double数据在内存中的存储方式

    float在内存中占4个字节(32bit),32bit=符号位(1bit)+指数位(8bit)+底数位(23bit) 指数部分 指数位占8bit,可以表示数值的范围是0-(表示0~255一共256个数 ...

  6. 数据结构不带头节点跟带头节点的单链表区别,C语言代码展示

    单链表头插法 不带头结点 void FronttList1(List *L) {List p;ElemType x;printf_s("请输入一组数据,以'0'为结束符\n");s ...

  7. c语言 链表 删除节点,C语言实现单链表节点的删除(不带头结点)

    对单链表节点进行增删改查是最基本的操作,这篇博客将会来实现对节点的删除.其他的操作可参考<C语言实现链表的基本操作>这篇博客.删除某个节点有两个类型: (1)删除i某个位置的节点: (2) ...

  8. c语言将一个已知头结点的单链表逆序_C语言实现单链表逆序与逆序输出实例

    单链表的逆序输出分为两种情况,一种是只逆序输出,实际上不逆序:另一种是把链表逆序.本文就分别实例讲述一下两种方法.具体如下: 1.逆序输出 实例代码如下: #include #include #inc ...

  9. 二叉树的顺序存储结构C语言代码实现

    二叉树的顺序存储是指用一组地址连续的存储单元依次自上而下.自左至右存储完全二叉树上的节点元素,即将完全二叉树上的编号为i的结点元素存储在一维数组下摆为i-1的分量中. 依据二叉树的性质,完全二叉树和满 ...

最新文章

  1. 使用Python部署机器学习模型的10个实践经验
  2. jekyll 博客对搜索引擎的SEO提升方法--head中的meta标签和Jekyll SEO Tag
  3. Redis5.0.8集群搭建与说明
  4. Jquery学习总结(2)——jQuery Ajax用法详解
  5. PHP的strpos函数辨析
  6. Binaural Microphone
  7. 如何创建一个微信小程序
  8. UnityShader 基于物理的体积光(丁达尔光线)
  9. 详解 box-shadow
  10. bluefish中文乱码问题
  11. 卖桃者说(1)有效学习
  12. 祝所有的程序猿春节愉快,好好休息
  13. Miniconda安装TensorFlow并导入Pycharm
  14. Ayla CEO大卫.弗里德曼:你应该了解的五种物联网大数据!
  15. edge,Chrome浏览器被360主页劫持极简解决方案(win10)
  16. 在微型计算机中1mb等于多少字节,字节换算-1mb等于多少kb
  17. pe文件中的3处Characteristics
  18. pythonsklearn多元回归回归_sklearn入门之多元线性回归
  19. SaaS服务平台为中小企业实现企业管理
  20. 【制作多媒体演示文稿软件】Focusky教程 | 轻松制作毕业答辩演示文稿

热门文章

  1. aspects_具有Aspects的Java中的Mixin –用于Scala特性示例
  2. 在Java中实现过滤器和面包店锁
  3. JavaFX真实世界应用程序:欧洲电视网广播联盟
  4. Guava的测试集合实现
  5. 玩Weld-Probe –一站式查看CDI的所有方面
  6. 使用入站适配器公开HTTP Restful API。 第1部分(XML)
  7. 内存泄漏–测量频率和严重性
  8. DI容器是代码污染者
  9. Java并发教程–线程之间的可见性
  10. 精简SWT FormLayout的用法