摘要
这几天开始学习数据结构方面的知识,也是为了后面算法的学习打一些基础,人们都说数据结构和算法是相互依存的关系,我想应该是有一些道理的。所以目前是以程杰的《大话数据结构》作为自学教材进行学习,初步看来,目前觉得这本书还是不错的,书中是以C语言作为编程实现语言,辅助的学习材料是Kenneth A.Reek的《C和指针》,虽然我后面的学习重点应该是Python和java,但是应该影响是不大的。
1.学习数据结构的一个例子
需要完成客户排队系统模块的代码工作,如果是使用数据库采用自动递增的整型数字作为客户的编号,直接对数据进行操作,那样势必有一些小题大做的嫌疑。正确的做法是:使用队列的结构,队列的结构比数据要好一些,又不用考虑数组的溢出问题。
2.数据结构的起源
1968年,美国的高纳斯教授在其所写的《计算机程序设计艺术》中较为详细的阐述了数据结构的相关概念,从此开创了这门课程的体系。
3.数据的逻辑结构和物理结构
- 逻辑结构,即我们常说的数据元素之间的关系,这是我们之后需要关注的最重要的问题。常见的逻辑结构包括:集合结构(数据平等,同属一个集合),线性结构(一对一)、树形结构(一对多)、图形结构(多对多)。
- 物理结构:有时也叫做存储结构,意味着这是指该数据在计算机中的存储形式。其中包括顺序存储和链式存储,前者的数据存储在地址连续的地址单元空间中,其逻辑关系和物理关系是一致的,类似于排队占位的例子。而链式结构的数据存储形式就不太一样,真实情况可能数据不是连续的,数据涉及到插入和删除,如采用的是顺序存储结构,那么涉及到的移动操作就比较繁琐,链式存储中,其数据可以存储在内存单元的任何位置,每个位置有一个相应的地址对应。移动、插入、删除的操作不影响其他数据的结构独立性,所以其灵活性就大了许多。
- 总的来说,逻辑结构是面向问题的,而物理结构是面向计算机的,其基本的目标是将数据及起逻辑关系存储到计算机的内存之中。