数据结构概述

什么是数据结构:

  数据结构研究的是数据的存储和数据的操作在的一门科学,

  数据的存储分为两部分:

    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 }

 

原文地址:https://www.cnblogs.com/chris-cp/p/4102470.html