数据结构 -(前言)

前言

写在前面

大学期间一直是个混子,曾经听过几次数据结构的课,发现着实是有些难懂,后来就再也没听过,大作业也都是抄别人的
考研逼不得已要学了,再回过头来自己看发现一切其实还蛮简单的(ps.不知道之前觉得难是不是那位女教授的功力)
学习的过程我没有看什么视频,就自己看书还有王道的辅导书(面向考研还是挺有用的)学完了数据结构
在现在的我看来数据结构非常重要是算法的基础,并且会潜移默化的影响你的工科思维,是学号计算机和深入了解计算机进而研究AI的基础
这篇讲述一些自己的学习心得和方法(贯穿整个数据结构的学习),推荐几本书,在大致讲述以下何为数据结构及一些相关的术语

  • 参考书籍

数据结构(C语言版)严蔚敏
大话数据结构
王道数据结构辅导

  • 一些建议

  • 抽象——具体(将抽象的术语概念具体化,通过一个个实际操作理解)
    对于没有基础的人(例如我)一开始学习的时候不要被专业的术语和概念绕迷糊,了解大概即可。这些术语从某种层面上很重要但都可以通过之后的学习中逐渐了解,因为一开始的术语都是抽象的,随着逐渐了解具体的数据结构,就会一点点理解精髓
    这也是很重要的第一点**抽象——具体 **
    对于数据类型,数据数据项什么术语都是很抽象的东西但放在实际工程中就可以瞬间明白是什么意思。

  • 深入学习
    一定不能浮于表面感觉大致懂了,一定要明白每个概念到底是什么,每个操作是如何实现的,还有为什么要进行这样的操作
    这也是所有学习最重要的三大块(是什么,为什么,怎么做)

  • 归纳扩展,联系推理
    数据结构与学习一定要学会归纳扩展(基于你学习的目的)如果是为了考研那更一定要结合题进行归纳
    注重各个数据结构之间的区别和联系,要知道每种数据结构在具体的工程中都有实际用途

  • 注重自我思考
    学习的时候一定要多注重自我的思考,学习别人的东西终究是别人的东西。

  • 一些题外话
    由于自己之前天天浪
    离考研开始还有40天的时候吧开始学习数据结构,计算机基础,计算机网络,操作系统
    最后408考了118,专业课的成绩还是比较满意的,当时对算法基本上一窍不通,算法的分直接白给了
    但我的后两门科目其实还有很多问题,和前面的科目之间,科目自身之间的许多联系还很脆弱

由于学习时间较短有些理解还是比较浅薄的,因此基础的笔记会一直更新下去不断加进工程的东西
(时间观念,具体实现代码暂不实现,预计今年逐渐更完)因此关键结构只给出思想和伪代码

相关代码用C++,python实现(嘿嘿!不会java)

由于我的思维有一丢丢的发散,有时候写一些东西的时候可能会跳到别的地方去,因此如果有人(我估计没有!哈哈哈哈)看的不舒服记得提醒我,我改一下

接下来言归正传

基础术语

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

  • 思考在前
    • 什么是数学模型,数学模型与我们的数据结构有什么关系
    • 生活中有哪些数据结构
    • 何为数据,数据与数据结构之间是怎样的关系呢

在富饶的中国的大地上有一群相亲相爱的青少年们他们现在分散在全国各地,他们分别是张三,李四,王二蛋,孙大饼但他们都毕业于野鸭大学,除了孙大饼以外几个小伙伴都有自己的女友,他们分别是王大锤,赵美丽,李漂亮,巧的也是她们都是野鸡大学的学生。
现在几个小伙伴已经毕业了一年了,想要趁着假期带着女友一起出去玩一玩,但是他们对于如何安排行程各有各的想法,谁也没办法说服谁,而且各自的预算都不尽相同,只好把所有相关的信息整理好给旅行社的好朋友(你)李狗剩(是好朋友还不带着一起玩实惨)帮忙安排行程
那么聪明的你能不能安排一个合适的行程,使得在所有人的花费都允许的情况下给出一个相对最优的方案

  • 相对最优:(在很多种情况下我们都只能得到一个相对最优的答案,因为根据不同的参数我们的最终方案可能是不同的,这点在机器学习方面更有显著的表现)在算法上,很多时候我们不能同时得到一个时空最优的方案,需要根据我们对时空的依赖程度大小选择适宜的方案(时间换空间,空间换时间)

  • 在这道题上我们的相对最优的两个目标分别是花费,耗时
    你收到了你的faker friends发来的表格

  • 数据(客观事物的符号,一切都可以是数据(这对于信息工程学很重要),一切你感兴趣的信息都可以输入计算机成为计算机的原料——数据)

    • 数据元素(数据的基本单位)
      • 数据项(数据的不可分割的基本单位)
  • 数据对象

  • 数据结构

    • 逻辑结构
    • 存储结构(物理结构)
  • 数据类型

  • 抽象数据类型(ADT,Abstract Data Type)
    逻辑结构和存储结构是理解各个结构的关键
    ADT是抽象——具体的关键一步

你可能感兴趣的:(计算机基础,#,数据结构)