数据结构的基本概念和抽象数据类型

1、基本概念和术语

数据:是对客观事物的符号表示。
数据元素:数据的基本单位,一个数据元素可由若干个数据项组成,数据项是数据的不可分割的最小单位
数据对象:性质相同的数据元素的集合是数据的一个子集
数据结构:相互之间存在一种或多种特定的关系的数据元素的集合

4种基本结构:

1.线性结构:结构中的数据元素之间存在一个对一个的关系
2.树形结构:结构中的数据元素之间存在一个对多个的关系
3.图状结构或网状结构:结构中的数据元素之间存在多个对多个的关系
4.集合:结构中的数据元素之间除了“同属于一个集合”的关系之外别无关系

数据结构的形式定义为:数据结构是一个二元组
Data_Structure=(D,S):D为数据元素的有限集,S是D上关系的有限集
逻辑结构:结构定义中的关系描述
存储结构/物理结构:数据结构在计算机中的表示,包括数据元素的表示和关系的表示
计算机中最小单位:位
数据元素:若干个位组合起来形成的一个串(元素/节点可以看成数据元素在计算机中的一个映射)
数据域:当数据元素由若干数据项组成时,位串中对应于各个数据项的子位串为数据域
数据元素在计算机中的表示方法:顺序映像和非顺序映像
顺序映像:借助元素在存储器中的相对位置来表示数据元素之间的逻辑关系
非顺序映像:借助指示元素存储地址的指针来表示元素之间的逻辑关系
数据元素在计算机中的存储结构:顺序存储结构和链式存储结构
数据类型是一个值的集合和定义在这个值集上的一组操作的总称。例如:整型变量,其值集为某个区间上的整数,定义在其上的操作为加减乘除和取模等算术运算
若按其值的不同特性,可以分为下列三种类型:
原子类型:属原子类型的变量的值是不可分割的。例如:C语言中的基本类型(整型、实型、字符型和枚举类型)、指针类型和空类型
结构类型:结构类型的值是由若干成分按某种结构组成的,因此是可以分解的,并且它的成分可以是非结构的,也可以是结构的。
固定聚合类型:属于该类型的变量,其值由确定数目的成分按某种结构组成
可变聚合类型:构成可变聚合类型“值”的成分的数目不确定
和数据结构的形式定义相对应,抽象数据类型可用以下三元组表示:
(D,S,P)/D表示数据对象,S是D上的关系集,P是对D的基本操作集。定义抽象数据类型:
ADT 抽象数据类型名{
数据对象:<数据对象的定义>
数据关系:<数据关系的定义>
基本操作:<基本操作的定义>
}ADT 抽象数据类型名
基本操作的定义格式:
基本操作名(参数表)
      初始条件:<初始条件描述>//执行操作之前数据结构和参数应该满足的条件,若不满足则操作失败返回出错信息
      操作结果:<操作结果描述>//操作正常完成之后数据结构的变化和应返回的结果
基本操作有两种参数:赋值参数只为操作提供输入值
                                 引用参数以&打头,除可提供输入值外,还将返回操作结果

例:
ADT Triplet{
数据对象:D={e1,e2,e3|e1,e2,e3∈ElemSet(定义了关系运算的某个集合)}
数据关系:R1={<e1,e2>,<e2,e3>}
基本操作:
IsAscending(T)
初始条件:三元组T已存在。
操作结果:如果T的3个元素按升序排列,则返回1,否则返回0.
}ADT Triplet
多边数据类型:其值的成分不确定的数据类型

2、抽象数据类型的表示与实现

抽象数据类型通过固有数据类型来表示和实现,即利用处理器中已存在的数据类型来说明新的结构,用已经实现的操作来组合新的操作。
C语言的一些核心子集:
预定义常量和类型
数据结构的表示(存储结构)用类型定义(typedef)描述
自定义函数
赋值语句
选择语句
循环语句
结束语句
输入输出语句
注释
基本函数
逻辑运算约定

3、算法和算法分析

算法的性质:有穷性,确定性,可行性,输入,输出
算法设计的要求:正确性,可读性,健壮性,效率和低存储量需求
算法效率的度量:
事后统计的方法(使用计算机内部的计时功能)
事前分析估算:一个算法是由控制结构(顺序、分支和循环3种)和原操作(指固有数据类型的操作)构成的,则算法时间由这两者共同决定

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/576425.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Jquery实现列表框效果

在java web开发中&#xff0c;我们经常要用到列表框&#xff0c;特别在系统的权限管理中&#xff0c;如上图所示&#xff0c;要实现如上效果&#xff0c;请看下面的源代码&#xff1a;源代码如下&#xff1a;<html><head><title>全选效果</title><s…

项目过程管理

项目过程管理 1. 项目所需要的文档&#xff08;需要归档&#xff09; 需求文档&#xff08;需求评审时的问题列表&#xff09;技术文档&#xff08;技术评审时的问题列表&#xff09;排期文档开发文档&#xff08;记录开发过程中遇到的难题和解决方案&#xff09;测试文档&am…

数据结构之指针复习

废话不多说&#xff0c;拿起键盘就是干&#xff0c;直接上代码&#xff1a; #include <stdio.h>int main() {double *p;double x 66.6;p &x; //x占8个字节&#xff0c;一个字节占8位&#xff0c;一个字节一个地址double arr[3] { 1.1,2.2,3.3 };double *q;q &a…

51与PC通信协议设计及实现(三):51部分模块化分工及设计

整个的51部分的伪代码简写如下&#xff1a; 1 void sendData() 2 {} 3 void time() 4 {} 5 void keysChecked() 6 { 7 return loca; 8 return key_state; 9 }10 main()11 {12 init();13 while(1)14 {15 if(keysChecked 1) //放到中断处理比较好16 …

管理机器学习项目

管理机器学习项目 一. 目录 传统的软件项目管理目前的现状机器学习项目管理 二、传统的软件项目管理 传统的软件项目管理和开发流程已经非常成熟。大致的流程如下&#xff1a; 由运营、产品进行最初的功能策划&#xff0c;进行可行性分析由项目经理召集相关人员进行产品启…

拖拽自动生成的DataGridView和BindingSource操作数据库(增加,修改,删除)---自己实现...

参考&#xff1a;http://hi.baidu.com/j2eedoc/blog/item/507ca70e1281c4e036d122dc.html using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Fo…

数据结构之结构体复习

为什么出现结构体&#xff1f; 为了表示一些复杂的数据&#xff0c;一些基本数据类型无法满足要求&#xff0c; 当要用一个变量描述一个对象的多个属性时&#xff0c;普通的内置数据类型是表示不了的&#xff0c;这个时候就可以用结构体回。结构体和类很相似&#xff0c;唯一不…

高效管理读书笔记

高效管理读书笔记一、优秀的权威宣言二、主要的内容要点2.1 有权威的领导都会关心自己的员工2.2 问责而不指责2.3 多点尤达&#xff0c;少点超人三、原书一、优秀的权威宣言 优秀的权威就是&#xff1a; 指出大部分人视而不见的问题的气质今天畅所欲言而不是空等明天的好心【…

C# 按钮美化技巧

(1)按钮 text设置成"" (2)按钮backgroundImage设置成 想要的图片 (3) ToolTip属性设置成 鼠标在上时的提示 (比如“搜索”、“删除”、“查找”)转载于:https://www.cnblogs.com/imihiroblog/archive/2012/06/08/2541940.html

蒙特卡罗方法介绍(一)

蒙特卡罗方法介绍(一) 一、蒙特卡罗方法的基本思想和解题步骤 1.1 蒙特卡罗方法的基本思想 蒙特卡罗方法也称随机模拟法、随机抽样技术或统计实验发&#xff0c;其基本思想是&#xff1a;为了求解数学、物理、工程技术或生产管理等方面的问题。首先&#xff0c;建立一个与求…

gawk手册

第一章 前言awk 是一个程式语言&#xff0c;对於资料的处理具有很强的功能。对於文 字档里的资料做修改、比对、抽取等的处理&#xff0c;awk 能够以很短的程式 轻易地完成。如果使用 C 或 Pascal 等语言写程式完成上述的动作&#xff0c; 会不方便且很花费时间&#xff0c;所写…

数据结构之malloc()函数动态内存分配复习

直接上代码分析 #include <stdio.h> #include <string.h> #include <malloc.h>int mian() {int a[5] { 1,5,8,46,12 };int len;printf("请输入你要分配数组的长度&#xff1a; len");scanf("%d", &len);int * pArr (int *)mallo…

神策数据张涛:如何让用户标签价值落地?

本文根据神策数据副总裁张涛在《用户个性化运营—标签体系搭建新机遇》主题沙龙中演讲整理所得。 标签系统&#xff0c;在企业中已不是什么“高大上”的说辞。然而让用户标签价值真正落地企业不多&#xff0c;就像“青少年谈性”&#xff0c; 有一段话形容得再贴切不过&#xf…

标量函数,多语句表值函数,内嵌表值函数

标量函数返回一个标量(单值)结果,可返回Timestamp,text,Ntext,Image,Table,Cursor多语句表值函数&#xff0c;返回一条或多条Transact-sql语句建立的表,可在select 语句的FROM子句中被引用.内嵌表值函数&#xff0c;位于RETURN子句中的SELECT命令段从数据库中摔选出来的&#x…

ios初学笔记

bool值只取最低位的值&#xff0c;若最低位为&#xff10;&#xff0c;bool值等于NO&#xff1b;若最低位不为&#xff10;&#xff0c;bool值等于YES。比较bool值的时候&#xff0c;将变量与NO进行比较最保险。objc不支持多继承类的description方法类似java的toString方法&…

蒙特卡罗方法介绍( 二)

蒙特卡罗方法介绍( 二) 一、蒙特卡罗求解定积分 蒙特卡洛方法求解定积分有两种方法&#xff0c;一种是上一节中讲的投点法&#xff0c;另外一种是期望法&#xff08;也称平均值法&#xff09;。 1.1 投点法 给出如下曲线f(x)f(x)f(x),求f(x)f(x)f(x)在a,ba,ba,b上的积分&am…

大数据技术之kafka (第 3 章 Kafka 架构深入) 分区策略在分析

如果不懂分区策略请看我之前的文章&#xff1a;https://blog.csdn.net/ywl470812087/article/details/105328015 默认的方式我们采用的是Range策略方式&#xff08;按主题给消费者消费&#xff0c;主题被谁订阅了就谁消费&#xff09; 先看下下面这个图&#xff0c;画的很丑&a…

如何达成目标笔记

如何达成目标 一、本书主要内容 推荐序一 升级你的行动工具箱 推荐序二 人们可以改变 引言 成功者和自制力的悖论 //004 自制力到底是怎样的 //007 你能做什么 //009 本书的主题 //011 1.1 准备就绪 第1章 你明白自己去往哪里吗 别说“做到最好” //017 大局与细节 //…

大数据技术之 Kafka (第 4 章 Kafka API ) Producer API

4.1.1 消息发送流程 Kafka 的 Producer 发送消息采用的是异步发送的方式。在消息发送的过程中&#xff0c;涉及到了两个线程——main 线程和 Sender 线程&#xff0c;以及一个线程共享变量——RecordAccumulator。main 线程将消息发送给 RecordAccumulator&#xff0c;Sender…

【分类器】- KNN

一、分类算法中的学习概念因为分类算法都是有监督学习&#xff0c;故分为以下2种学习。1、急切学习&#xff1a;在给定的训练元组之后、接受到测试元组之前就构造好分类模型。算法有&#xff1a;贝叶斯、基于规则的分类&#xff08;决策树&#xff09;、向后传播分类、SVM&…