c语言 如何创建adt_数据结构 C 语言版 --- 链表

9e3fed6d0ba5ac4982961db36cbddfab.png

679598752899c81cab4cb0cf5a1a55dc.png

f1f58a8cb0c4d49c151f723fb82f6ccf.png

如何学习数据结构的内容呢?

  1. 简单介绍对应结构的基本概念。
  2. 抽象数据类型的介绍。
  3. 相关代码的实现(这是此公众号写数据结构篇章的意义所在)。

f1f58a8cb0c4d49c151f723fb82f6ccf.png

7cd5ad4090a84fd71269c039ca670b88.gif

线性表简介

ff40e69b823e5638dfaf483f03dec34f.png

线性表(linear_list)是最常用且最简单的一种数据结构。它的特点是在有限的非空集合下:

  1. 每个数据元素都有一个确定的位置。
  2. 除了第一个数据元素外,集合中的每一个数据元素仅有一个前驱。
  3. 除了最后一个数据元素外,集合中的每一个数据元素仅有一个后驱。

19c6dd5e42e0ce93417db1fb09d55b56.png

7cd5ad4090a84fd71269c039ca670b88.gif

抽象数据类型介绍

ff40e69b823e5638dfaf483f03dec34f.png

抽象数据类型(ADT)主要是程序中的数据结构的数学模型或者是程序设计语言的数据类型。

这部分内容建议初学者理解就好,不建议深究。

  • 数据对象:就是你要操作的数据的最基本的数据类型,可以是一个常量、一个变量、或者结构体等自定义的数据类型。
  • 数据关系:数据类型的特点及逻辑关系
  • 基本操作:程序所需要去执行的事件。

19c6dd5e42e0ce93417db1fb09d55b56.png

链表的顺序表示和实现

线性表的链式表示指的是用一组任意的存储单元依次存储线性表的数据元素。

下图提供「顺序表」跟「线性表」的对比图:

8e61fc30b5dce1edd118b2807ee15a7c.png

线性链表的节点(数据元素)由指针域和数据域组成。

数据域:存储数据元素信息「数据即数据域」

指针域:指向下一个节点(数据元素)「地址即指针域」

如图所示:

d4650f42bb21170620ade504f76291f2.png

含头节点链式表示法:

c89e5d050ae8db9d3858c967258f0dd7.png

下面的代码实现了线性表的顺序表示法:

f4efbebda3bf6cb04cf9fbecf67ca4d5.png

7ca033f80332856941af41cff3750ddd.png

334848ca4a9f146ed0992759284b010e.png

根据上面的程序,编译结果如下:

728ffb1f43050d32dca2079b92585771.png

「数据结构之线性表的链式结构」随笔

25a181e29b970c342bb11032e06b75be.png

写「数据结构之线性表的链式结构」主要理解如下的一个结构:

typedef struct LNode

{

int data;

struct LNode* next;

}LNode;

//指向单链表结点的指针

typedef LNode* LinkList;

int InitLink_Sq(LinkList *L);

int ListLength_L(LinkList L);

LinkList *L 是声明了一个指针的指针的结构体。

LinkList *L 指向的是 Linklist,所以创建| 销毁Linklist,使用它。

LinkList L 是声明了一个指针的结构体。

LinkList L 指向的是 Linklist 的结点,所以操作Linklist 「读、写、删、增等时」时,使用它。

f1f58a8cb0c4d49c151f723fb82f6ccf.png

奋斗中的小青年,终生学习者。

f1f58a8cb0c4d49c151f723fb82f6ccf.png
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值