《计算机程序设计艺术》摘录(一)

一个算法只不过是一组有穷的规则,这些规则给出求解特定类型问题的运算序列;但除此之外,一个算法还有五个特征:

 1.有限性;一个算法在有限步骤之后必然要终止。

2.确定性;一个算法的每个步骤都必须精确的定义。

3.输入;

4.输出;

5.能行性。一个算法一般认为是能行的(或称有效的),其含义是指它的所有运算都必须是充分基本的,因而原则上人们用笔和纸都可在有限的时间内精确的完成他们。

信息结构

计算机程序通常都是对一些信息表进行的操作。这些表并不仅仅是杂乱无章的数值集团;它们含有数据元素之间重要的结构关系。

计算机表示的设计依赖于对数据所要求的功能,以及它的固有性质。对功能与形式的强调一般说来对于设计问题是很基本的。

计算机的存储器是按它们的应用来分类的。

对线性表我们可能要实施的运算包括例如下面这些:

1.访问表的第K个节点以考察和/或改变它的字段的内容。

2.在第K个节点之前或之后插入一个新的节点

3.删除第K个节点

4.把两个或者更多的线性表组合成一个线性表

5.把一个线性表拆分成两个或者更多的表

6.复制一个线性表

7.确定在一个表中的节点个数

8.基于节点的某些字段把表的节点排成递增的顺序

9.在表中查找在某个字段中具有特定值的一个节点

线性表中特殊的名字:

1.栈 所有的插入和删除都在表的一端进行的一种线性表

2.队列 所有的插入在表的一段进行,而所有的删除在表的另一端进行的一种线性表

3.双端队列 是所有的插入和删除在表的两端进行的一种线性表

我们在解决下列这样的问题的时候,我们心里总是想着“栈”:一个问题导致另一个问题,而它又导致另一个问题;我们把问题和子问题压入栈中,并且在解决了他们之后

就把他们从栈中删除。



posted @ 2011-05-11 10:28  小西346  阅读(322)  评论(0)    收藏  举报