数据结构——线性表1

数据结构——线性表



前言

 本节将会学习到线性表的基础知识,以及顺序表和链表的理论知识,具体代码实现以及练习题将在后续博客中学习到。

一、线性表

1.预备知识:
(1)线性表是数据结构的逻辑结构。
(2)线性结构:一个数据集合中的数据元素的有序集(次序)。

        ①基本路线:序偶 <前驱,后继>
        ②基本要求:只能存放同类型的数据元素。
        ③特征: i>有且只有一个元素无前驱,称为首元节点(第一个元素);
               ii>有且只有一个元素无后继,称为微元素(最后元素);
              iii>除以上两种,其余元素向前都只有一个前驱,向后只有一个后继。

2.定义:满足线性结构的数据集合。
3.类型定义:
(1)图例法
(2)二元组法
在这里插入图片描述4.抽象类型定义(ADT):
在这里插入图片描述

二、顺序表

1.定义

逻辑结构:线性表
物理存储结构:存储结构——用连续的地址用来存储元素
①满足线性表的特征
②顺序表要用顺序地址映像——地址可计算,可随机访问

2.顺序存储地址可计算
a

32584769
01234578

a≡&a[0]
②ADD(a[i])=ADD(a[0])+1*sizeof(ElemSN)
「在C语言中不用计算字节数,只需要下标(偏移量)(&a[i] = a+i)」

三、链表

1.定义

逻辑结构:线性表
物理存储结构:链式存储影像——用零散的空间换时间效率
(1)顺序存储——单位连续——地址可计算——CPU
(2)链式存储特点:
①利用内存零散空间——单元不连续
②单元地址必须存储
(3)结果:链表并没有节省空间,只是利用零散空间。

2.术语
(1)结点:存储每个数据元素的存储单元
在这里插入图片描述

(2)定义:

typedef struct Node{
	int data;
	struct Node *next;
}ElemSN,*List;

类型名:struct Node,ElemS N,*List;
struct Node *p;
ElemSN *p;
*List l;
动态单元分配:(ElemSN *)malloc(sizeof(ElemSN));
结点释放:free(p);
(3)结点成员引用:

struct Node S1;
ElemSN S2;
struct Node *p;
S1.data=3;
S2.data=2;
p->data;
p->next;

在这里插入图片描述
(4)链表图例
在这里插入图片描述
(5)头指针head:用来指向首元节点

特点:
①他的值首元节点的地址
②head没有data和next


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值