# 什么是算法和数据结构？

一个算法就像一张教计算机“烹饪”的“食谱”。如果你了解做菜的过程，你就能理解算法的定义。

下面有一张关于[制作薄饼的食谱](http://allrecipes.com/recipe/21014/good-old-fashioned-pancakes/)：

1. 首先，将面粉、泡打粉、盐和白砂糖倒入一个大碗中。
2. 加入牛奶、鸡蛋和融化了的奶油。
3. 搅拌混合直至丝柔顺滑。
4. 中火加热平底锅。
5. 将搅拌好的面糊缓慢倒入锅中，每个薄饼大概用 1/4 CUP 的面糊即可。
6. 薄饼两面都呈黄褐色即可出锅享用了。

这张食谱由一系列的步骤组成，你只需一步接一步按照指令来就可以了。算法也是如此，只不过它的指令是交给计算机去执行的，而不是厨师。

这些原料(面粉、牛奶、鸡蛋、黄油等)相当于算法中的待处理数据。这些原始数据(各种不同的原料)作为算法的输入，输出的数据(好吃的薄饼)即是结果。

那数据结构是什么呢？数据结构用于持有算法需要处理的数据。例如在薄饼食谱中，数据结构对应于用来装面粉的袋子、用于搅拌原料的碗、用于烹饪的平底锅以及最终用于盛烤好的薄饼的盘子。
