做程序员一定要懂数据结构

随着计算机产业的迅猛发展,计算机的应用深入到人类生活的各个领域。正是这种深入,使得计算机的应用不再局限于数值计算。而更多的应用于控制、管理以及处理数据等非数值计算的处理工作。

 

用计算机解决一个问题大体步骤如下:

1.从具体问题出发,抽象出一个适当的数学模型     ------------------分析问题

2.设计一个解决此数学模型的算法                       ------------------从中提取操作的对象,找出对象间的关系,用数学语言加以描述

3.编程

4.测试、调整

5.解答

 

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

 

    数据结构的形式定义:数据结构是一个二元组Data_Structure = (D,S)

 

数据结构 1968 开始作为独立的课程  但对课程范围没有明确规定 

《计算机程序设计技巧》(第一卷:《基本算法》)---->第一本系统地阐述数据的逻辑结构和出差结构及其操作的著作

当时几乎和图论(表、树的理论)同义 ---------------->网络、集合代数论、格、关系扩充进来-->《离散结构》-------->文件管理

 

计算机科学---->数据结构(综合性的专业基础课)1.硬件(编码理论、存储装置、存取方法)

                                                                    2.软件(编译程序、操作系统、存储分配)

                                                                    3.数学

一些基本概念:

1。数据data

     对客观事物的符号表示

2。数据元素data element

     数据的基本单位

3。数据项data item

     数据不可分割的最小单位

4。数据对象data object

    性质相同的数据元素的集合,是数据的一个子集

4。数据结构data structure

     相互之间存在一种或多种特定关系的数据元素的集合

     1)集合:同属一个集合(极为松散的结构)

     2)线性结构:一对一

     3)树形结构:一对多

     4)图状结构(网状结构):多对多

6。数据类型data type

    一个值的集合和定义在这个值集上的一组操作的总称。

 

抽象数据类型(ADT,abstract data type):一个数学以及定义在该模型上的一组操作。

       ADT = (D,S,P)

              ----数据对象

              ----数据关系

              ----基本操作    -----初始条件

                                   -----操作结果

 

算法algorithm:对特定问题求解步骤的一种描述,是指令的有限序列,一条指令表示一个或多个操作。

     1)有穷性:步骤有穷,时间有穷

     2)确定性:每一条指令必须有确切意义

     3)可行性:可以通过已经实现的基本运算执行有限次来实现

     4)输入:零个或多个

     5)输出:一个或多个

 

算法的渐近时间复杂度

 

算法的存储空间需求

这个文件里包含了数据结构的所有的程序的实现,都是本人亲自写出来并在vs下调通了,绝对没有问题,绝对可以通过老师的检查。这些程序都是本人在数据结构的课程设计的时候写的,主要的内容是 1、顺序表的建立插入删除查找 链表的建立插入删除查找 (包括顺序实现和链式实现) 2、栈的建立插入删除查找 队列的建立插入删除查找 (包括顺序实现和链式实现) 3、串——改进后的KMP 4、稀疏矩阵——三元组转置和乘法 5、二叉树遍历、哈夫曼树的建立 6、图的遍历、连通分量和强连通分量、关节点、最小生成树、拓扑排序、关键路径(prim和kruscal算法)、最短路径(有dijstra和floyd算法) 7、折半查找、二叉排序树、平衡二叉树、散列函数 8、插入排序、折半插入、冒泡排序、快速排序、简单选择、堆排序、二路归并排序 另外还有一些测试数据在里面,大家可以试试。 数据结构真的是很重要很重要,这么课要是没有学好,那就不算是计算机系的学生,而且数据结构很重要的就是要理解好那些经典的算法,在以后我们的实践中你会发现,基本上的问题都可以归结为那些经典问题,纳闷只要我们掌握了那些经典问题的经典算法,融会贯通的应用,拿在什么情况下都是游刃有余的。 希望对大家有所帮助,并且希望能够大家能支持支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值