`
java.jianan
  • 浏览: 19552 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

数据结构

阅读更多
package com.struc;

import javax.swing.JOptionPane;
import javax.swing.*;
import java.awt.*;
import java.awt.Graphics;

public class Hanoi extends JFrame {

private static final long serialVersionUID = 1L;

static int n = Integer.parseInt(JOptionPane
.showInputDialog("输入盘子数目 int:"));

static int time = Integer.parseInt(JOptionPane
.showInputDialog("输入移动盘子的频率 int:"));
static int num = 0;

static char[] array = new char[n];

MyPanel panel = new MyPanel();
static String string = "";
static JTextArea text = new JTextArea();

public Hanoi() {
getContentPane().setLayout(new BorderLayout());
getContentPane().add(new JScrollPane(text), BorderLayout.EAST);
getContentPane().add(panel, BorderLayout.CENTER);
}

public static void main(String[] args) {
for (int i = 0; i < n; i++) {
array[i] = 'A';
}
Hanoi hanoi = new Hanoi();
hanoi.setTitle("HanoiZiJiZuo Tower");
hanoi.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
hanoi.setSize(1450, 400);
hanoi.setVisible(true);
hanoi.moveDisks(n, 'A', 'C', 'B');
}

public class MyPanel extends JPanel {

public void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.RED);
g.drawLine(50, 310, 1100, 310);
g.fillRect(200, 10, 10, 300);
g.drawString("A", 203, 340);
g.fillRect(500, 10, 10, 300);
g.drawString("B", 503, 340);
g.fillRect(800, 10, 10, 300);
g.drawString("C", 803, 340);
draw(g);
repaint();
}

void draw(Graphics g) {
g.setColor(Color.YELLOW);
num = 0;
for (int i = n; i > 0; i--) {

if (array[(int) (i - 1.0)] == 'A') {
g.fillOval(205 - (int) ((i - 1 + 1.0) / n * 150),
290 - 20 * num,
2 * (int) ((i - 1 + 1.0) / n * 150), 20);

g.setColor(Color.BLACK);
g.drawString("" + i, 203, 304 - 20 * num);
g.setColor(Color.YELLOW);
num++;
}

}
num = 0;
for (int i = n; i > 0; i--) {

if (array[(int) (i - 1)] == 'B') {
g.fillOval(505 - (int) ((i - 1 + 1.0) / n * 150),
290 - 20 * num,
2 * (int) ((i - 1 + 1.0) / n * 150), 20);
g.setColor(Color.BLACK);
g.drawString("" + i, 503, 304 - 20 * num);
g.setColor(Color.YELLOW);
num++;
}

}
num = 0;

for (int i = n; i > 0; i--) {
if (array[(int) (i - 1)] == 'C') {
g.fillOval(805 - (int) ((i - 1 + 1.0) / n * 150),
290 - 20 * num,
2 * (int) ((i - 1 + 1.0) / n * 150), 20);
g.setColor(Color.BLACK);
g.drawString("" + i, 803, 304 - 20 * num);
g.setColor(Color.YELLOW);
num++;
}
}
g.setColor(Color.BLACK);
}

}

public void moveDisks(int a, char fromTower, char toTower, char auxTower) {
// Stopping condition
if (a == 1) {
System.out.println("Move disk " + a + " from " + fromTower + " to "
+ toTower);
string += "Move disk " + a + " from " + fromTower + " to "
+ toTower + "         .\n";
text.setText(string);
array[a - 1] = toTower;
pause();
} else {
moveDisks(a - 1, fromTower, auxTower, toTower);
System.out.println("Move disk " + a + " from " + fromTower + " to "
+ toTower);
string += "Move disk " + a + " from " + fromTower + " to "
+ toTower + "         .\n";
text.setText(string);
array[a - 1] = toTower;
pause();
moveDisks(a - 1, auxTower, toTower, fromTower);

}

}

public static void pause() {
try {
Thread.sleep(time * 100);// 可以修改此值加快盘子移动的速度
} catch (InterruptedException e) {
}
}
}
分享到:
评论

相关推荐

    PTA-数据结构与算法题目集.zip

    PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 ...

    上海交大数据结构课件 上海交大数据结构课件

    数据结构是计算机科学中的核心课程之一,主要研究如何在计算机中高效地组织和存储数据,以便于进行各种操作。上海交通大学的数据结构课件是学习这一主题的重要资源,它涵盖了广泛的知识点,帮助学生深入理解数据结构...

    精心整理史上最全的数据结构flash演示动画,共5个版本,祝大家考研成功!

    精心整理史上最全的数据结构flash演示动画,共5个版本,祝大家考研成功! \数据结构flash演示\版本1 \数据结构flash演示\版本2 \数据结构flash演示\版本3 \数据结构flash演示\版本4 \数据结构flash演示\版本5 ...

    数据结构1800题(含答案)数据结构1800题(含答案)

    数据结构1800题(含答案)数据结构1800题(含答案)数据结构1800题(含答案)数据结构1800题(含答案)数据结构1800题(含答案)数据结构1800题(含答案)数据结构1800题(含答案)数据结构1800题(含答案)数据结构...

    数据结构(第4版)习题及实验参考答案-数据结构复习资料完整版(c语言版).docx

    "数据结构(第4版)习题及实验参考答案-数据结构复习资料完整版(c语言版)" 本文档是关于数据结构的习题及实验参考答案,涵盖了数据结构的基础知识、逻辑结构、物理结构、算法、时间复杂度等方面。 数据结构基础 ...

    数据结构的pdf课件

    数据结构是计算机科学中的核心课程,它探讨了如何在计算机中高效地组织和管理数据,以便于快速查找、存储和处理。这份“数据结构的pdf课件”是学习这一主题的重要资源,尤其对于初学者来说,它能提供系统性的指导和...

    数据结构 数据结构 数据结构 数据结构 数据结构

    数据结构是计算机科学中的核心概念,它涉及到如何在计算机中有效地组织、存储和处理大量数据。数据结构的设计和选择直接影响到算法的效率以及程序的性能。在这个领域,我们研究各种不同的数据组织方式,如数组、链表...

    王道数据结构.zip

    《王道数据结构》是针对计算机科学与技术专业考研学子的重要参考资料,主要涵盖了数据结构的基础理论、算法设计以及分析等内容。这份压缩包包含了2019年和2020年的版本,无水印,适合考生们进行系统的学习和复习。 ...

    王道考研——数据结构PPT.zip

    数据结构是计算机科学中的核心课程之一,主要研究如何在计算机中组织、存储和管理数据,以便高效地进行各种操作。王道考研的数据结构PPT涵盖了这门学科的关键概念和技术,对于准备考研的学生来说,是一份非常有价值...

    Java常见数据结构面试题(带答案)

    "Java常见数据结构面试题(带答案)" 以下是对Java常见数据结构面试题的知识点总结: 栈和队列 * 栈和队列的共同特点是只允许在端点处插入和删除元素。 * 栈通常采用的两种存储结构是线性存储结构和链表存储结构...

    数据结构-清华大学-严蔚敏

    清华大学严蔚敏教授所编著的《数据结构》是一本经典的教材,不仅覆盖了数据结构的基础理论,还结合了C语言的实践应用,成为学习数据结构的重要资源。 首先,数据结构的概念包括数据元素、数据项和数据对象等基本...

    数据结构与算法分析--C语言描述_数据结构与算法_

    数据结构与算法是计算机科学的基础,对于理解和设计高效的软件至关重要。C语言因其高效、底层特性,常被用于实现数据结构和算法,使得程序更接近硬件,性能更优。本资源"数据结构与算法分析--C语言描述"是针对数据...

    数据结构(唐发根)

    数据结构是计算机科学中的核心课程之一,主要研究如何在计算机中高效地组织和存储数据,以便于进行各种操作。唐发根教授的数据结构教程是一部深受初学者欢迎的教材,它全面且深入地介绍了数据结构的基本概念、算法和...

    数据结构和算法分析 C++版 第三版

    "数据结构和算法分析 C++版 第三版" 本资源是《数据结构和算法分析 C++版 第三版》的摘要信息,作者是Clifford A. Shaffer,来自 Virginia Tech 的计算机科学系。该书将数据结构和算法分析的基本概念和技术进行了...

    数据结构高分笔记part1

    数据结构是计算机科学中的核心课程,对于理解和设计高效的算法至关重要,尤其在计算机软件开发、数据库管理、算法分析等领域。这份“数据结构高分笔记part1”显然是为了帮助备考研究生入学考试的专业学生准备的,...

    北航--数据结构课件

    数据结构是计算机科学中的核心课程,它探讨了如何在计算机中有效地存储和组织数据,以便进行高效的检索、插入和删除等操作。北京航空航天大学(北航)的数据结构课程以其严谨性和实用性著称,该课程的课件对于学习者...

    北京邮电大学809数据结构复习指南

    【北京邮电大学809数据结构复习指南】是一份由成功上岸北邮AI院的学长编写的详尽复习资料,旨在帮助备考北邮研究生考试的学生,特别是那些选择809数据结构作为专业课的考生。复习指南依据北邮研究生招生网的考试大纲...

    数据结构(java版本)

    数据结构是计算机科学中的核心概念,它涉及到如何有效地组织和管理数据,以便于高效地进行存储、检索和处理。在Java编程环境下,理解和掌握数据结构对于程序员来说至关重要,特别是对于初学者,它可以帮助提升编程...

    数据结构第二版(清华严蔚敏版)数据结构习题答案

    "数据结构第二版(清华严蔚敏版)数据结构习题答案" 本资源摘要信息涵盖了数据结构的基本概念、逻辑结构、存储结构、抽象数据类型等知识点,并提供了详细的解释和例子。 数据结构基本概念 数据结构是相互之间存在...

Global site tag (gtag.js) - Google Analytics