数据结构概述
什么是数据结构:
数据结构研究的是数据的存储和数据的操作在的一门科学,
数据的存储分为两部分:
1、个体的存储 2、个体关系的存储
从某个角度而言,数据的存储最核心的就是个体关系的存储,个体的存储可以忽略不计;
递归:
汉诺塔问题:如果将n个盘子(由小到大)从a通过b,搬到c,搬运过程中不能出现小盘子在大盘子下面的情况。
思路分析:假设前要移动第100个盘子,分两步走,移动第99个;再移动第100个;而要移动第99个,同样分两部,移动第98个,再移动第99个,以此类推;
if(n>1)
{
1、先将A柱上的前n-1个盘子从A借助C移动到B;
2、把A柱子上的第n个盘子直接移动到C;
3、再将B柱子上的n-1个盘子借助A移动到C;
}
1 #include <iostream> 2 static int s_data = 0; 3 4 void move(const int i, const char a, const char b) 5 { 6 s_data++; 7 std::cout<< "把" <<i<<"号盘子从"<<a<<"移到"<<b<<std::endl; 8 } 9 10 void hannoi(const int n, char a, char b, char c) //参数说明:a是源柱,b是借助的柱子,c是目标柱子 11 { 12 int tmp = n; 13 if(tmp == 1){ 14 move(1, a, c); 15 }else{ 16 hannoi(tmp-1, a, c, b); 17 move(tmp, a, c); 18 hannoi(tmp-1, b, a, c); 19 } 20 } 21 22 int main() 23 { 24 std::cout<<"以下是7层汉诺塔的解法:"<<std::endl; 25 hannoi(4,'A','B','C'); 26 std::cout<<"输出完毕!总次数为"<< s_data <<std::endl; 27 while(1); 28 }