什么是数据结构?

概念

数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法和索引技术有关。

 

数据结构的英文是Data Structures

DataDatum的复数形式,在计算机科学中,Data是计算机使用的信息的一种表示形式,是一个复数,表示数据很多。Structure表示许多相关的部分是如何组织关联在一起的,所以,在计算机科学中,数据结构是这么描述的,它是在计算机中一种存储数据的方式,使得数据可以在计算机中可以被有效地使用,如果合理地,仔细地选择数据结构,可以基于数据结构设计出最有效的算法可以看到,数据结构和计算机和效率之间是有着关联性的,数据结构是可以让我们更加有效率地使用数据设计算法的一个基础

 

在计算机科学领域中,数据可以分为数值型数据和非数值型数据,与这两种数据相对应的问题可以成为数值问题,这种问题是以数学方式表示的问题求数值例如,解代数方程计算、矩阵计算、线性方程组求解、数值积分、微分方程求解等还有一种问题和非数值数据相关的称为非数值问题求非数值解例如,排序查找,模式匹配等,通常处理一个非数值问题没有一种明确的数学方法。

问题引入 

问题描述

设计一个湖南大学校园导航程序,为学生提供各种信息查询服务。

【基本要求】

设计湖南大学的校园平面图,所含地点不少于10个。以图中顶点表示各个地点,存放地点名称、代号、简介等信息;以边表示路径,存放路径长度等相关信息。

为学生提供图中已有任意地点相关信息的查询。

为学生提供图中已有任意地点的导航,即查询任意两个地点之间的最短路线图。

可以看到,题目描述的问题并非我们常见的数值问题,而是一个非数值问题,非数值问题的数学模型不再是数学方程,而是图的数据结构。要解决本题中的三个基本要求,就需要用到数据结构中的图结构来解决问题。

 

相关资料

图作为一种数据结构,是一个用线或边连接在一起的顶点或节点的集合。

 

定义:

Graph<VertexType>G;其中VertexType为图存储的数据类型,可以是任意类型。

 

基本操作:

1putVex(int v, VertexType) //添加顶点

2setEdge(int, int, int)          //添加边

3setEdge(bool flag)           //设置无向图

4VertexType getVex(int v) //获取顶点信息

5Weight(int, int)                //查询一条边的权重

 

存储方式:

相邻数组和相邻表

解决方案

第一个要求:设计湖南大学的校园平面图

putVex(int v, VertexType) 来设置地点,用setEdge(int, int, int) 来设置路,setType (bool flag)来设置为无向图

 

第二个要求:为学生提供图中已有任意地点相关信息的查询

VertexType getVex(int v) //获取顶点信息

Weight(int, int) //查询一条边的权重

获取到这10个地点的名称、代号、简介等信息及2个地点之间的路程

 

第三个要求:为学生提供图中已有任意地点的导航,即查询任意两个地点之间的最短路线图

这个问题是一个最短路径问题,涉及到了算法知识,可用Dijkstra算法来求解

 

总结

数据结构在解决方案中起到的作用:

 

1.图结构让问题变得直观清晰。

2.确定了一个数据存储的方式,让一系列相关的操作在此基础上进行。

3.Dijkstra算法是建立在图结构上的。

 

用自己的想法来理解数据结构

什么是数据呢?钥匙、校园卡、钱包、手机等,这些物品都可以看作是数据。从这个意义上来讲,数据结构就是这些物品的摆放和存储方式。

数据结构就是: 钥匙、校园卡、钱包、手机等物品的存储摆放方法,做到井井有条可以方便后续查找和使用。

算法就是:查找、获取、使用上述物品的方法。

而本题,图结构就是最合适的数据结构,如果用其他数据结构呢?

 

数据结构适用的范围

      数据结构所研究的问题是非数值型问题,它是研究,或者是处理非数值数据之间的数值关系,及如何表示,如何存储,如何处理。涉及到这类问题,都可以用数据结构来对问题进行求解。如排序问题可以用线性表实现,学生管理系统可以树结构来实现,和本题用图结构实现等等

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值