博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据结构
阅读量:5098 次
发布时间:2019-06-13

本文共 1279 字,大约阅读时间需要 4 分钟。

备战2019---《数据结构与算法》复习详解---参考哈工大精品教程

第一章 绪论

本章的学习目的主要是对数据结构基础的一些概念解释,包括:

基本定义,研究对象,抽象数据型,算法,算法求解。

1.1. 数据结构起源

数据结构的创始人---Donald. Knuth
数据结构描述的是客观世界与计算机之间的映射关系
在这里插入图片描述
补充: 属于面向对象的编程有:C++,java , python ,三个基本特征是继承,封装,多态
(封装可以隐藏实现细节,使得代码模块化;继承可以扩展已存在的代码模块(类,多态使得同一操作面向不同对象产生不同结果)

1.2 研究对象与基本概念

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI0NDI5MzMz,size_16,color_FFFFFF,t_70
在这里插入图片描述
注意: 这个概念经常考到,我们举例说明,比如说有一个学籍管理的表结构
watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI0NDI5MzMz,size_16,color_FFFFFF,t_70
数据元素—每一行记录,数据项—每个段,如学号,姓名,数据对象----每一列的信息,类似于数组。/单独的一张表就称为数据对象??
watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI0NDI5MzMz,size_16,color_FFFFFF,t_70
watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI0NDI5MzMz,size_16,color_FFFFFF,t_70
学籍管理----一一对应表,人机---一对多-树,计划---图
watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI0NDI5MzMz,size_16,color_FFFFFF,t_70
watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI0NDI5MzMz,size_16,color_FFFFFF,t_70
watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI0NDI5MzMz,size_16,color_FFFFFF,t_70
watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI0NDI5MzMz,size_16,color_FFFFFF,t_70
补充:顺序存储: 存储单元的连续性反映元素的顺序逻辑关系
链接存储:选择任意存储单元指针表示元素的逻辑关系
watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI0NDI5MzMz,size_16,color_FFFFFF,t_70
1.3 抽象数据模型---ADT
watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI0NDI5MzMz,size_16,color_FFFFFF,t_70
数据类型:是一个值的集合和定义在这个值集合的一组操作的总称。类似int,float,bool等等这些数据类,数据类型分为两大类:原子类型(不能再分,例如int,float)和结构类型(可再分,例如:数组,线性表,树等)
抽象数据类型: 是数据模型和定义在上面的操作集合。数据结构可以用二元组来表示(D,S)(D是数据元素有限集,S是D上的关系有限集),而抽象数据类型可以用三元组进行表示(D,S,P)(P是基本操作集)。简单来概括一下,抽象数据类型==数据结构+操作。
watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI0NDI5MzMz,size_16,color_FFFFFF,t_70
1.4 算法及算法分析
watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI0NDI5MzMz,size_16,color_FFFFFF,t_70
辗转相除法是求两个自然数的最大公约数的一种方法(参考百度百科)
watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI0NDI5MzMz,size_16,color_FFFFFF,t_70
watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI0NDI5MzMz,size_16,color_FFFFFF,t_70
python算法实现:

def  gongyueshu(m,n):    r=m % n    while(r!=0):        m=n        n=r        r=m % n        #print("r是最大公约数",n)    if r==0:        print("n是最大公约数",n)if __name__=='__main__':    gongyueshu(319,377)

在这里插入图片描述

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI0NDI5MzMz,size_16,color_FFFFFF,t_70

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI0NDI5MzMz,size_16,color_FFFFFF,t_70
watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI0NDI5MzMz,size_16,color_FFFFFF,t_70
watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI0NDI5MzMz,size_16,color_FFFFFF,t_70
watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI0NDI5MzMz,size_16,color_FFFFFF,t_70
watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI0NDI5MzMz,size_16,color_FFFFFF,t_70
![()
重要!!!!!
watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI0NDI5MzMz,size_16,color_FFFFFF,t_70
watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI0NDI5MzMz,size_16,color_FFFFFF,t_70
watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI0NDI5MzMz,size_16,color_FFFFFF,t_70
watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI0NDI5MzMz,size_16,color_FFFFFF,t_70
watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI0NDI5MzMz,size_16,color_FFFFFF,t_70
pyth
watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI0NDI5MzMz,size_16,color_FFFFFF,t_70
1.5 逐步求精的程序设计方法
watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI0NDI5MzMz,size_16,color_FFFFFF,t_70
watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI0NDI5MzMz,size_16,color_FFFFFF,t_70
20190123102027604.png
watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI0NDI5MzMz,size_16,color_FFFFFF,t_70
20190123102109447.png
watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI0NDI5MzMz,size_16,color_FFFFFF,t_70
watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI0NDI5MzMz,size_16,color_FFFFFF,t_70
在这里插入图片描述
在这里插入图片描述
watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI0NDI5MzMz,size_16,color_FFFFFF,t_70
python代码实现:

在这里插入代码片

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI0NDI5MzMz,size_16,color_FFFFFF,t_70

作业:
求程序(python版本和C语言版本---作业已写c语言版本):设字符集为字母和数字的集合,字符的顺序为A,B,C,…,Z,0,l,2,…,9,请将下列字符串按字典顺序排列存储。PXC, 4A5C, ABC, XYC, SRSI,94,D99,H8, B9,并分析可以采取的存储方案。

答-------本题中,可采取的是链表的数据结构,通过比较字符串之间的顺序,进行插入,相比采用数组存取,更容易进行插入删除,数组不容易进行插入和删除。

转载于:https://www.cnblogs.com/869222wxy-/p/10308265.html

你可能感兴趣的文章
shell笔记(基本知识)
查看>>
SSDB 数据库
查看>>
【搜索】POJ-2718 全排列+暴力
查看>>
vue项目经验:图形验证码接口get请求处理
查看>>
解决:linux 固定ip 导致ping 外网unknown host
查看>>
LeetCode 210. Course Schedule II
查看>>
人见人爱,花见花开的数据库
查看>>
关于<context:property-placeholder>的一个有趣现象
查看>>
XigmaNAS中virtualbox无法启动问题
查看>>
C++用new创建对象和不用new创建对象的区别解析
查看>>
【Packet Tracer 实验笔记4】
查看>>
Why C++ ? 王者归来
查看>>
ServletContext实现转发和读取Properties配置文件
查看>>
My Brute HDU - 3315(KM || 费用流)
查看>>
RestTemplate 中文乱码解决方法
查看>>
冒泡排序, 使用最低票价.---双重循环,一重移动次数.二重移动
查看>>
1go基本语法
查看>>
C与C艹的内存管理方式
查看>>
UVa401
查看>>
查看selinux的状态
查看>>