首页 > 其他分享 >数据结构-数据结构绪论

数据结构-数据结构绪论

时间:2025-01-06 20:06:47浏览次数:3  
标签:存储 绪论 1.3 元素 数据结构 数据 结构

目录

1.1开场百

1.2数据结构起源

1.3基本概念和术语

1.3.1数据

1.3.2数据元素

1.3.3数据项

1.3.4数据对象

1.3.5数据结构

1.4逻辑结构与物理结构

1.4.1逻辑结构

1.4.2物理结构

1.5数据类型

1.5.1数据类型定义

1.6抽象数据类型


1.1开场百

If you give someone a program,you will frustrate them for a day; if you teach them how to program,you will frustrate them for a lifetime.(如果你交给某人一个程序,你将折磨他一整天;如果你教某人写程序,你将折磨他一辈子)

"数据结构"是计算机的基础课程,但也是一门不太容易学好的课,它当中有很多费脑子的东西。

1.2数据结构起源

早期人们都把计算机理解为数值计算工具,就是感觉计算机是用来计算的,可现实中,我们更多的不是解决数值计算的问题,而是需要一些更科学有效的手段的帮助,才能更好地处理问题。所以:

        数据结构是一门研究非数值计算的程序设计问题中的操作对象,以及它们之间的关系和操作等相关问题的学科。

        数据结构的起源可追溯至计算机发展历程。早期,计算机主要用于简单科学计算,数据处理随意,无严谨组织。20世纪 50 - 60年代,高级程序设计语言兴起,FORTRAN、COBOL 带来数组等基本类型,为数据组织提供便利,其概念开始萌芽。1968年,唐纳德·克努特在《计算机程序设计艺术》中系统阐述,使之成为独立学科。此后,软件危机催生软件工程,数据结构助提升软件质量;数据库系统发展,它又为海量数据存储管理筑牢根基。

        程序设计=数据结构+算法

1.3基本概念和术语

先来谈谈什么叫数据

1.3.1数据

        数据:是描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别,并输入给计算机处理的符号集合。

        数据不仅仅包括整形,实型等数值类型,还包括字符及声音,图像,视频等数值类型。数据其实就是符号,而且这些符号必须具备两个前提:

  • 可以输入到计算机
  • 能被计算机程序处理

对于整形,实型等数值类型,可以进行数值计算。

对于字符数据类型,就需要进行非数值的处理。而声音,图像,视频等其实是可以通过编码的手段变成字符数据来处理。

1.3.2数据元素

        数据元素:是组成数据的,有一定意义的基本单位,在计算机中通常作为整体处理,也被称为记录,结点或顶点。

        比如,在人类中人是数据元素,牲畜中,鸡,鸭,牛,羊是数据元素。

1.3.3数据项

        数据项:一个数据元素可以由若干个数据项组成

        比如人这个数据元素可以有眼睛,耳朵,鼻子,嘴巴这些数据项组成。也可以有姓名,年龄,性别等数据项。

        数据项是数据不可分割的最小单位。在“数据结构”这门课中,我们把数据项定为最小单位。

但在真正讨论问题时,数据元素才是数据结构中建立数据模型的着眼点。

        数据,数据元素,数据项三者之间的关系

        数据>数据元素>数据项

1.3.4数据对象

        数据对象:是性质相同的数据元素的集合,是数据的子集。

比如:

        整数数据对象是集合N={0,+-1,+-2,......}

        字母字符数据对象是集合C={‘A’,‘B’,......‘Z’}

学籍表也可以看作一个数据对象

1.3.5数据结构

        不同数据元素之间不是独立的,而是存在特定的关系,我们将这些关系称为结构。

数据结构:是相互之间存在一种或多种特定关系的数据元素的集合。

        在计算机中,数据元素并不是孤立,杂乱无序的,而是具有内在联系的数据集合。

数据结构包括以下三个方面的内容:

1.数据元素之间的逻辑关系,也称逻辑结构

2.数据元素及其关系在计算机内存的表示(对称映像),称为数据的物理结构或数据的存储结构。

3.数据的运算实现,即对数据元素可以施加的操作以及这些操作在相应的存储结构上的实现。

1.4逻辑结构与物理结构

1.4.1逻辑结构

        逻辑结构:是指数据对象中数据元素之间的相互关系。这也是我们今后最需要关注的问题,有四种基本逻辑结构。

        1.集合结构

集合结构:集合结构中的元素除了同属于一个集合外,它们之间没有其他关系。

        2.线性结构

线性结构:线性结构中的数据元素之间是一对一的关系。

        3.树形结构

树形结构:树形结构中的数据元素之间存在一种一对多的关系。

        4.图形结构

图形结构:图形结构的元素是多对多的关系。

        我们在用示意图表示数据的逻辑结构时,要注意两点:

  • 将每一个数据元素看作一个节点,用圆圈表示。
  • 元素之间的逻辑关系用结点之间的连线表示,如果这个关系是有方向的,那么用带箭头的连线表示。

1.4.2物理结构

物理结构:也叫存储结构,是指数据的逻辑结构在计算机中的存储形式

        根据物理结构的定义,实际上就是如何把数据元素存储到计算机的存储器中。

        数据的存储结构应正确反映数据元素之间的逻辑关系,这才是最关键的,如何存储数据元素之间的逻辑关系,是实现物理结构的重点和难点。

        数据元素的存储结构形式主要有四种:顺序存储结构,链式存储结构,索引存储结构,散列存储结构。

        1.顺序存储

顺序存储:把逻辑上相邻的元素存储在物理位置上也相邻的存储单元中,元素之间的关系由存储单元的邻接关系来体现。

        2.链式存储

链式存储:逻辑上相邻的元素在物位置上可以不相邻,借助指示元素存储的指针来表示元素之间的逻辑关系。

        3. 索引存储

在存储元素信息的同时,还建立附加的索引表。索引表中的每项称为索引项,索引项的一般形式是(关键字,地址)。

        4.散列存储

根据元素的关键字直接计算出钙元素的存储地址,又称哈希(Hash)存储

        若采用顺序存储,则各个数据元素在物理上必须是连续的,若采用非顺序结构,则各个数据元素在物理上是可以离散的。数据的存储结构会影响存储空间分配的方便程度。数据的存储结构会影响对数据运算的速度。

1.5数据类型

1.5.1数据类型定义

        数据类型:是指一组性质相同的值的集合及定义在此集合上的一些操作的总称。

因为在计算机中的内存不是无限大的,要计算1+1=2,3+5=8这样的整数型数字就不需要开辟很大的内存,于是计算机研究者们就考虑要对数据进行分类,分出来多种数据类型。

        在C语言中,按照取值的不同,数据类型可以分为两类:

原子类型:

        是不可以再分解的基本类型,包括整形,实型,字符型等。

结构类型;

        由若干个类型组合而成,是可再分解的。例如,整型数组是由若干个整型数据组成的。

1.6抽象数据类型

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

        抽象数据类型(Abstract Data Type, ADT):一个数学模型及定义在该模型上的一组操作。抽象数据类型的定义仅取决于它的一组逻辑特性,而与其在计算机内部如何表示和实现无关。

标签:存储,绪论,1.3,元素,数据结构,数据,结构
From: https://blog.csdn.net/wind_one1/article/details/144928113

相关文章

  • [数据结构学习笔记6] 树(Trees)
    为什么要有树结构,我们日常生活中,有很多层级关系,比如家庭树,组织架构图等等。这些或许也能够用数组或者链表来表示,但是这个比喻很好,就好像我们用叉子和盘子也能喝汤,但总是不对劲儿,我们可以有更好的表示方式。 了解树的一些术语树是由一系列节点(node)和边(edge)相互关联构成的。孩......
  • 可持久化数据结构
    可持久化数据结构呢,就是说这些数据结构,它们都非常持久(其实就是可以访问和修改历史版本的信息可持久化线段树可持久化权值线段树就是主席树如果你还不太了解,可以看看当然还有更普遍的可持久化线段树——支持区间修改的。考虑pushdown会影响下方历史版本的线段树信息,自然想到......
  • 启航数据结构算法之雅舟,悠游C++智慧之旅——线性艺术:顺序表之细腻探索
    人无完人,持之以恒,方能见真我!!!共同进步!!文章目录一、线性表的概念二、顺序表1.概念与结构2.顺序表的分类静态顺序表动态顺序表三、顺序表的实现1.顺序表的结构2.顺序表的初始化和销毁初始化函数销毁函数3.顺序表的扩容4.顺序表的尾插和头插尾插函数头插函数5.顺序......
  • [数据结构学习笔记5] 队列(Queue)
    队列和堆栈类似,但是它是一种先进先出的结构。FIFO(firstinfirstout)。代码实现,javascriptclassQueue{constructor(){this.items=newLinkedList();}clear(){this.items=newLinkedList();}contains(item){......
  • 8.Redis底层数据结构——ziplist和listpack
    一、ziplist1.1ziplist结构Redis采用紧凑的字节数组表示一个压缩列表,压缩列表结构示意图如下:<zlbytes><zltail><zllen><entry><entry>...<entry><zlend>zlbytes:压缩列表的字节长度,占4个字节,因此压缩列表最多有2*32-1个字节。zltail:压缩列表尾元素相对于压缩......
  • Udemy——Python数据结构与算法(11)
     课程:【Udemy高分付费课程】Python数据结构与算法-终极Python编码面试和计算机科学训练营(中英文字幕)_哔哩哔哩_bilibili算法归并排序基本思想归并排序是一种基于分治思想的排序算法。它的核心思想是将待排序序列不断分成两半,直到每一部分只有一个元素(此时认为是有序......
  • Udemy——Python数据结构与算法(10)
     课程:【Udemy高分付费课程】Python数据结构与算法-终极Python编码面试和计算机科学训练营(中英文字幕)_哔哩哔哩_bilibiliGraph基本代码classGraph:def__init__(self):self.adj_list={}defprint_graph(self):forvertexinself.adj_list......
  • Udemy——Python数据结构与算法(9)
      课程:【Udemy高分付费课程】Python数据结构与算法-终极Python编码面试和计算机科学训练营(中英文字幕)_哔哩哔哩_bilibili哈希表HashTable通过将键(Key)映射到表中一个位置来访问记录,以加快查找速度。简单来说,它就像一个“字典”,你可以通过一个“索引”(键)快速找到对应的内......
  • Python数据结构与算法分析 第3版PDF、EPUB免费下载
    适读人群:1.希望学习数据结构和算法的Python用户;2.计算机专业的学生和老师。只有洞彻数据结构与算法,才能真正精通Python!热门计算机科学教材,华盛顿大学、北京大学等多家高校采用,让你在代码编写的战场上所向披靡!电子版仅供预览,下载后24小时内务必删除,支持正版,喜欢的请购买正版......
  • [数据结构学习笔记4] 堆栈(Stack)
    堆栈,我们总是把新的数据加在堆栈的最顶端,移除的时候也是从最顶端开始移除。也叫LIFO(lastinfirstout)。代码实现(javascript)classStack{constructor(...items){this.items=items;}clear(){this.items.length=0;}clon......