咨询微信:19130631612
19130631612
学习园地
当前位置:首页 > 学习园地 > 详情内容
什么是数据结构?数据结构、程序设计
作者:五月花电脑培训学校
时间:2019-12-16

什么是数据结构?这是一个很难直接回答的问题。一般来说,用计算机解决一个具体的问题,需要经过以下几个步骤:首先,我们需要从具体的问题中抽象出一个合适的数学模型,然后我们需要设计一个能够解决这个数字的数学模型:首先,我们需要从具体的问题中抽象出一个合适的数学模型,然后我们需要设计一个算法来求解这个数学模型,最后我们需要编译出程序,测试并调整程序,直到最后得到答案。

寻求数学模型的实质是分析问题,从具体问题中提取运算对象,找出这些运算对象之间的关系,然后用数学语言进行描述。为了说明这个问题,首先给出一个例子,然后给出一个明确的含义。

假定有一个学生通讯录,该通讯录记录了某校全体学生的姓名和相应的住址,现在要写一个算法,要求是,当给定任何一个学生的姓名时,该算法能够查出该学生的住址。这样一个算法的设计,将完全依赖于通讯录中的学生姓名及相应的住址是如何结构的,以及计算机是怎样存储通讯录中的信息的。

如果通讯录中的学生姓名是随意排列的,其次序没有任何规律,那么当给定一个姓名时,则只能对通讯录从头开始逐个与给定的姓名相比较,顺序查对,直至找到所给定的姓名为止。这种方法相当费时,效率也很低。

但是,如果学生通讯录组织得当,按班级安排学生,再建立一个索引表,可以用来在通讯录开头登记每个班级学生姓名的位置,那么情况就会大大改善。

这时,当您想要找到一个学生的地址时,您可以首先从索引表中找到该学生的类名的起始位置,然后从这个起始点开始搜索,而不是检查其他类的名称。由于新的结构,我们可以编写一个完全不同的算法。
  上面的学生通讯录是一个数据结构问题。由此可见,计算机算法与数据结构密切相关,而算法又取决于具体的数据结构,因此数据结构直接关系到算法的选择和效率。

    接下来,我们将进一步讨论学生通讯录。新生入学时,通讯录需要增加新生的姓名和相应地址:毕业生离校时,应将毕业生的姓名和相应地址从通讯录中删除,需要在排列的结构上插入和删除。对于特定的结构,如何插入和删除?在前面、后面或中间插入要添加的学生的姓名和相应的地址?插入是否影响原始数据?有什么影响?删除学生姓名和相应地址后,是否需要删除其他数据(学生姓名和相应地址)移动?如果你需要搬家,怎么搬家?这一系列问题表明,为了满足数据增减的需要,还必须定义数据结构——一些操作。上面只涉及两个操作,即插入操作和删除操作。当然,还有其他可能的操作,比如学生搬家后地址的改变。为了满足这一需求,需要定义修改操作等。
    这些操作显然是由计算机完成的,因此需要设计相应的插入、删除和修改算法。也就是说,数据结构还需要给出由每种结构类型定义的各种操作的算法。

   从以上讨论可以直观地认为,数据结构是研究程序设计中计算机操作的对象以及它们之间的关系和操作的一门学科。