数据结构笔记

绪论

数据结构研究的内容:

什么是数据结构?
将具体问题抽象为数学模型,分析问题,提取操作对象,找出操作对象之间的关系,然后用数学语言来描述,就是数据结构
在这里插入图片描述
这些问题的共性都无法用数学的公式或方程来描述,是一些“非数值计算”的程序设计问题。
数据结构是一门研究非数值计算的程序设计中计算机的操作对象以及它们之间的关系和操作的学科

在这里插入图片描述
基本概念和术语

  • 数据
    是能输入计算机且能被计算机处理的各种符号的集合。是信息的载体,分为数值型数据(整数,实数。。。)和非数值型数据(文字,图像,声音。。。)

  • 数据元素
    是数据的基本单位,在计算机程序中通常为一个整体进行考虑。也成为元素、记录、结点、顶点。

  • 数据项
    构成数据元素的不可分割的最小单位。
    在这里插入图片描述

  • 数据对象
    是性质相同的数据元素的集合,是数据的子集。在这里插入图片描述
    在这里插入图片描述
    数据元素不是孤立存在的,数据元素相互之间的关系成为结构。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合,或者说,数据结构是带结构的数据元素的集合。

数据结构包括三个方面:

  1. 数据元素之间的逻辑关系,也称为逻辑结构。
  2. 数据元素及其关系在计算机内存中的表示(又称为映像),称为数据和的物理结构或数据的存储结构。
  3. 数据的运算和实现,即对数据元素可以施加的操作以及这些操作在相应的存储结构上的实现。

数据结构的两个层次

存储结构是逻辑关系的映像与元素本身的映像
逻辑结构是数据结构的抽象,存储结构是数据结构的实现。
在这里插入图片描述

逻辑结构的种类:
1、线性结构

有且只有一个开始和一个终端结点,例如:线性表,栈,队列,串。
2、非线性结构

一个结点可能有多个直接前趋,多个直接后继,例如:树,图。
在这里插入图片描述
存储结构的种类:

存储结构是指数据的逻辑结构在计算机中的存储形式

1、顺序存储结构

一组连续的存储单元依次存储数据元素,数据元素之间的逻辑关系由元素的存储位置来表示。
在这里插入图片描述
2、链式存储结构

用一组任意的存储单元(不连续)存储数据元素,数据元素之间的逻辑关系用指针来表示(链表)。

3、索引存储结构

在这里插入图片描述
4、散列存储结构。

数据类型和抽象数据类型

数据类型的定义:数据类型是一组性质相同的值的集合以及定义于这个值集合上的一组操作(±*/)的集合。
在这里插入图片描述

数据类型的作用:
1、约束变量或常量的取值范围。
2、约束变量或常量的操作。

抽象数据类型

抽象是指抽取食物具有的普遍性的本质。

抽象的意义在于数据类型的数学抽象特性。

抽象数据类型的定义仅取决于它的一组逻辑特性,而与其在计算机内部如何表现和实现无关。
在这里插入图片描述
抽象数据类型可以通过固有的数据类型(整型,实型,字符型等)来表示和实现。即利用存储器已存在的数据类型来说明新的结构,用已经实现的操作来组合新的操作。

算法

算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作。

算法的五大特性:输入、输出、有穷性、确定性、可行性。

算法设计的要求:

正确性、可读性、健壮性、时间效率高和存储率低。

函数的渐进增长

判断一个算法的效率时,函数中的常数和其他次要项常常可以忽略,而更应该关注主项(最高阶项)的阶数。

在这里插入图片描述

为了完成c语言实训,所以先跳过线性表的顺式结构,把链式结构先写了,到时候回来补充,主要为了学链表。

线性表链式存储结构:

结点:数据元素的存储映像(在存储器中)每个结点包括两个域:数据域(存储元素数值数据),指针域(下一个结点的地址)
把记录第一个元素的地址叫做头指针
链表:n个结点由指针链组成一个链表,是线性表的链式存储映像

单链表、双链表、循环链表:

结点只有一个指针域的链表,称为单链表或线性链表
结点有两个指针域的链表,称为双链表
首尾相接的链表称为循环链表

头指针、头节点、首元结点:

头指针:存储第一个结点地址,或者说指向第一个结点的指针
首元节点(第一个结点):链表中存储第一个数据元素的结点
头结点:在首元结点前附设的一个结点 ,方便操作
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
单链表是由表头唯一确定,因此单链表可以用头指针的名字来命名,若头指针名为L,则把链表称为L

在这里插入图片描述
这里的*Linklist的意思是一个struct Lnode这个类型的指针,名字叫Linklist,就像整型叫int一样,Lnode *L=Linklist L;

定义链表用:Linklist L
定义结点指针p:Lnode *p,而不用上面那种形式
在这里插入图片描述
循环链表:
将单链表中的终端结点的指针端由空指针改为指向头结点,这种头尾相连的单链表称为单循环链表,简称循环链表。

先进后出,后进先出
栈是限定仅在表尾进行插入和删除操作的线性表,允许插入和删除的一端叫栈顶,另一端叫栈底。线性表的表尾就是栈顶。
进栈出栈的次序可以有很多种,最先进的不一定最后出

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值