一个算法只不过是一组有穷的规则,这些规则给出求解特定类型问题的运算序列;但除此之外,一个算法还有五个特征:
1.有限性;一个算法在有限步骤之后必然要终止。
2.确定性;一个算法的每个步骤都必须精确的定义。
3.输入;
4.输出;
5.能行性。一个算法一般认为是能行的(或称有效的),其含义是指它的所有运算都必须是充分基本的,因而原则上人们用笔和纸都可在有限的时间内精确的完成他们。
信息结构
计算机程序通常都是对一些信息表进行的操作。这些表并不仅仅是杂乱无章的数值集团;它们含有数据元素之间重要的结构关系。
计算机表示的设计依赖于对数据所要求的功能,以及它的固有性质。对功能与形式的强调一般说来对于设计问题是很基本的。
计算机的存储器是按它们的应用来分类的。
对线性表我们可能要实施的运算包括例如下面这些:
1.访问表的第K个节点以考察和/或改变它的字段的内容。
2.在第K个节点之前或之后插入一个新的节点
3.删除第K个节点
4.把两个或者更多的线性表组合成一个线性表
5.把一个线性表拆分成两个或者更多的表
6.复制一个线性表
7.确定在一个表中的节点个数
8.基于节点的某些字段把表的节点排成递增的顺序
9.在表中查找在某个字段中具有特定值的一个节点
线性表中特殊的名字:
1.栈 所有的插入和删除都在表的一端进行的一种线性表
2.队列 所有的插入在表的一段进行,而所有的删除在表的另一端进行的一种线性表
3.双端队列 是所有的插入和删除在表的两端进行的一种线性表
我们在解决下列这样的问题的时候,我们心里总是想着“栈”:一个问题导致另一个问题,而它又导致另一个问题;我们把问题和子问题压入栈中,并且在解决了他们之后
就把他们从栈中删除。