(一)数据结构之浅谈数据结构

数据结构之浅谈数据结构

  • 什么是数据结构
  • 什么是时间、空间复杂度
  • 数据结构的应用
  • 结尾

1. what is 数据结构 (or Why 数据结构)

我的理解:
顾名思义,数据结构就是数据存储的结构。比如要全部存储一个年级全部学生的信息(包括年级、学号、姓名以及性别等),那么这些学生的信息在内存当中存储的逻辑存储结构就可以采用顺序存储结构(结构体数组就是其中一种,如下代码作示例),也可以为链式存储结构(eg:链表),而根据具体需求链表又可分为单向链表,双向链表,双向循环链表等等不同的存储结构。因此可知面对合适的问题选择正确合理的数据结构去处理显得尤为重要!!总之,数据结构就相当于寸拳(原谅我只能想到这个比喻…),别人挥一拳大力的,能打败敌人,但你一记比较轻松的寸拳也能打败敌人。虽然最终效果相同,但寸拳更为巧妙和省力。 体现在工作中就是你的代码较之别人更巧妙,更高效,那么为什么不录用、提拔你呢?

typedef struct {
	char name[20];
	long long StuId;
	int gender;
	int grade;
} stu;
stu[1000]; //定义能存储1000个学生信息的结构体数组
数据结构(data structure)是相互之间存在一种或多种特定关系的数据元素的集合。

这就是书本上对于数据结构这一概念较为官方、精简的阐释。

2. what is 时间、空间复杂度

这两个名词是数据结构一书中被经常提起的,它们反映了一个算法执行用时和内存消耗的一个量度,也在很大程度上反映了一个算法的优良(一个时间、空间复杂度都尽可能小的算法总是被提倡的)。
如何理解它们呢,你可以认为它们是关于问题规模的一个函数(事实上确实是这样),反映了算法的时间空间消耗随问题规模的增长而增长的速率,用于估算一个算法的可行性(一个时间复杂度为O(n^2)的算法在问题规模到达某个临界点时几乎是不可被实现的,即耗时无穷大)。
空间复杂度与之类似,一个无需额外辅助空间的算法被称为原地工作,这是最理想的情况。

3. what can it does

实际应用举例:

  1. 停车管理系统:在车道上等候的车辆具有先进(路)先出,后进后出的特点。想实现这个功能用“笨方法”当然行,但绝对不提倡。此时数据结构 “队列” 显然是最优的解法,因为它正好有先进先出,后进后出的特点。
  2. 在地图上找一条最短的路,它经过地图上的每一座城市 :这是很经典的求解“哈密尔顿通路”问题,也常见于 求解地图上两个地点之间的最短路径问题实际上这在百度、高德等地图导航时不是经常用到吗?你以为这些路径规划方案是怎么出现在你面前的? )这时候就需要“图”的数据结构以及prime或者kruskal算法(分别针对稠密图、稀疏图)来处理就会显得非常方便。

4. ending

所以不懂数据结构的程序员很难说是真正的程序员,数据结构也是大学计算机专业必学专业课以及面试当中经常涉及的重点。所以学好数据结构十分重要!

你可能感兴趣的:(数据结构,数据结构,算法,c++,c语言)