数据结构-线性表

一、线性表基本概念

1、定义:线性表是具有相同特性数据元素的一个有限序列

  • 相同特性:同一类实物归类、方便批量处理
  • 有限:元素个数为n,n有限大,n可以为0
  • 序列:表中元素排成一排,一对一的逻辑特性

2、逻辑结构

  • 只有一个表头元素,只有一个表尾元素,表头元素无前驱,表尾元素无后继,除表头元素和表尾元素,其他元素只有一个直接前驱和一个直接后继。

3、存储结构(顺序/链式存储结构)

  • 顺序表:线性表中所有元素按逻辑排序,存到连续的存储空间中

  • 链表:每个结点有所存元素的信息(元素之间逻辑关系的信息)

4、两种存储结构的区别

  • 顺序表:
    随机访问特性;
    占用连续存储空间;
    存储分配预先进行,分配好则保持不变;

  • 链表:
    不支持随机访问;
    存储空间利用率较低(有指针);
    存储空间动态分配(节省空间)。

  • 从表整体:一般顺序表存储空间利用率低于链表;
    从单个存储单元:顺序表存储空间利用率高于链表。

5、链表五种形式:单链表,双链表,循环单链表,循环双链表,静态链表。

  • 单链表:结点(数据域、指针域)
    头指针–指向链表中第一个结点
    头结点–带头结点的链表中第一个结点
    在这里插入图片描述

  • 双链表:结点(数据域、两个指针域)
    在这里插入图片描述

  • 循环单链表:不会有空指针
    在这里插入图片描述

  • 循环双链表:不会有空指针
    在这里插入图片描述

  • 静态链表:结构体数组
    一个结点:data和指针分量

二、线性表结构体定义

  1. 顺序表
#define MaxSize 50
typedef struct{
	int data[MaxSize];   //存顺序表元素的数组
	int length;     //存顺序表的长度
}Sqlist;

顺序表结构图

  1. 单链表
typedef struct LNode
{
	int data;    //结点数据域
	struct LNode*next;  //指向后继结点的指针
}LNode;
  1. 双链表
//双链表定义
typedef struct DLNode
{
	int data;    //结点数据域
	struct DLNode*prior;  //指向前驱结点的指针
	struct DLNode*next;  //指向后继结点的指针
}DLNode;

在这里插入图片描述

三、顺序表的操作

四、单链表的操作

五、双链表的操作

六、逆置

七、取最值

八、归并

九、划分

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值