数据结构概述

简介: 什么是数据结构:   数据结构研究的是数据的存储和数据的操作在的一门科学,   数据的存储分为两部分:     1、个体的存储  2、个体关系的存储   从某个角度而言,数据的存储最核心的就是个体关系的存储,个体的存储可以忽略不计;  递归:   汉诺塔问题:如果将n个盘子(由小到大)从a通过b,搬到c,搬运过程中不能出现小盘子在大盘子下面的情况。

什么是数据结构:

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

  数据的存储分为两部分:

    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 }

 

 

相关文章
|
11月前
|
存储 算法 搜索推荐
数据结构与算法(一):概述
数据结构与算法(一):概述
226 0
|
存储 算法
【数据结构其实真不难】数据结构和算法概述
【数据结构其实真不难】数据结构和算法概述
98 0
【数据结构其实真不难】数据结构和算法概述
|
C++ C语言
"数据结构翻转课堂"答疑实录——概述
【说明】 本文是《数据结构》翻转课堂在线答疑的实录,由云班课的“答疑/讨论”功能中导出数据整理而成。
842 0
|
16天前
|
消息中间件 存储 搜索推荐
深入理解栈和队列(二):队列
深入理解栈和队列(二):队列
29 0
|
1月前
【栈】数据结构栈的实现
【栈】数据结构栈的实现
|
1月前
|
存储
数据结构--栈和队列
数据结构--栈和队列
|
1月前
|
存储 算法 数据处理
数据结构从入门到精通——栈
栈,作为一种后进先出(LIFO)的数据结构,在计算机科学中扮演着重要的角色。它的特性使得它在处理函数调用、括号匹配、表达式求值等问题时具有得天独厚的优势。然而,如果我们跳出传统思维的束缚,会发现栈的用途远不止于此。
58 0
|
1月前
|
C语言
数据结构之栈详解(C语言手撕)
数据结构之栈详解(C语言手撕)
35 1