我们数据结构版面准备编写一部数据结构的初级教程,初步设定读者对象为数据结构初学者和数据结构自学者。
我们希望这部教程即可以单独作为一本初级教程,又可以作为一本很好的参考书。
当然最主要的是对您学习数据结构有所帮助。
对于同一个例子,我们将用C/C++两种语言格式分别进行编写,以消除程序语言方面的障碍。
我们使用统一的编译器VC++6.0,我们保证我们所列出的每一个程序都是能够正常运行的。
不过由于工作量很大,所以并不期望短期内完成。
************************************
绪论
======================
预备知识
-----------------------------------
在开始学习数据结构之前,请您先确保如下几点:
1. 至少掌握了一门编辑语言(C/C++,JAVA,VB等),当然我们推荐您在学习数据结构前先掌握好C/C++,相对来说用这两种语言学习数据结构会更容易些,我们的教程也是基于这两种语言的。
2. 如果您使用的是C/C++语言,那么请您温习一下C中的结构体或C++中的类的相关章节,确保您能熟练的使用C中的结构体或C++中的类进行编程,在以后的学习中,您会发现这是多么的重要,数据结构中几乎所有的程序实现都离不开结构体或是类的运用。
3. 我们强烈要求在您的手边至少要有一只能写字的笔和一张能用于演算的纸。您不应期望像读小说一样来读数据结构中出现的算法和相关程序,如果抱有这样的想法,就很难理解算法的进程。学习算法的最好方法就是尝试它。您应当纸笔不离手,并在遇到算法时,立即在纸上进行算法的推演,比如您可以假定一个合理的数据,并用这个算法来处理这个数据,那么这个数据会怎样变化,会依次经历算法中的哪些步骤,最后会输出一个怎样的数据,这都是您需要了解的。事实上,这非常的重要,并不限于数据结构。如果您想更深入的学习编程技术,从而摆脱菜鸟阶段,这种方法是必须掌握的。
4. 我们希望您能明白这一点,相对于程序,数据结构更加注重算法,算法才是数据结构的重点。对于初学者来说,通过编程来理解算法的思想是最好的方法,因此编程在数据结构中占了不小的比例。然而,有人因此认为编程才是重点,并在编程的问题上喋喋不休,这就舍本逐末了。数据结构不是来教您怎样编程的,那是C/C++语言老师的任务。在数据结构中程序只是让您更加理解算法的一个途径。当然,我们会在每一个重要的算法后面贴上相关的能够运行的程序范例,但我们希望您能单独完成它,这说明您已经掌握了这种算法。
数据结构及其基本概念
-----------------------------------------
什么是数据结构?在回答这个问题前,我们得先弄清楚什么是数据。
数据(Data),是对客观事物的符号表示,它是具体的,可以被量化处理的。比如说住在一栋宿舍内的所有的人(后面的例子以此为基础)。在计算机科学中指的是所有能输入到计算机中并能被计算机程序处理的符号的总称(如数字,图象,声音等等)。
数据元素(Data Element)是数据的基本单位,就像宿舍内的一间寝室,在计算机程序中通常作为一个整体进行考虑和处理。一般情况下它是由若干个数据项组成。
数据项(Data Item)是数据的不可分割的最小单位,就像住在宿舍内的一个人,再分割可就得把人大卸八块了,那可是杀人罪啊。
数据对象(Data Object)是性质相同的数据元素的集合,是数据的一个子集,比如说一栋宿舍内的第二楼的所有的人。
那什么是结构呢?
结构(Structure),是指数据元素相互之间的关系,就像整个宿舍楼的建筑构造布局一样,在任何问题中没有数据元素是孤立存在的。当然,这里的结构指的是数据结构研究范围内的结构。
那么什么是数据结构呢?数据结构就是那栋宿舍楼。
数据结构是指同一类数据元素中各个数据元素之间存在的关系。
*******************************************
小知识
对于数据结构这个概念,至今国际上并没有一个同意精确的说法。不同的人在不同的环境下在使用这个词时表达的意思有所不同。通常情况下它指的是数据的存储结构,即同一类数据元素中各个数据元素之间存在的关系。但有时候也被诠释为具有某种结构关系的数据,即相互之间存在一种或多种特定关系的数据元素的集合。我个人倾向于前一种说法,当然,你也可以将其理解为数据及其结构,这样可能更加完善,更加明白些。
*******************************************
根据元素之间的相互关系, 通常有下列4种基本结构:
(1)集合。
该结构中的所有数据元素均独立存在,与其他数据元素之间是“鸡犬之声相闻,老死不相往来”,除了“在同一个结构里”这个关系之外就没有任何其它关系了。既然没有关系,那么就不在我们的研究范围之内了,本教程自然也不会去招惹他了。虽然刚见面,还是对它说再见吧。
//插图
(2)线形结构。
该结构中的数据元素之间存在且只存在一对一的关系。不太好理解?我也觉得有点,举个例子:就像幼儿园的小朋友玩“开火车”的游戏一样,第二个拽着第一个,第三个拽着第二个--------排成一长条,这就是一个典型的线形结构。什么?你没上过幼儿园?那就拿火车来说吧,像火车的车厢那样,一个拉一个,拉成一长条,也是一个典型的线形结构。什么?你没见过火车?!¥#¥%#……%*
//插图
(3)树形结构。
//插图
(4)图形结构和网壮结构
//插图
本部分未完待序
[此贴子已经被作者于2006-8-4 19:07:58编辑过]