
数据结构与算法
文章平均质量分 69
Yuliang Feng
这个作者很懒,什么都没留下…
展开
-
统计Java源代码中关键字的数目(每个关键字的数目)
题目要求:编写一个程序,读取一个java源代码文件(.java),然后报告该文件中关键字的个数。从命令行传递这个java源文件。以下代码从IDEA中的程序运行参数中传入 Java源代码文件的绝对路径,此步骤等价于“从命令行传递这个java源文件”的绝对路径。此外以下程序使用了与java源代码在相同文件夹下存储Java所有关键字的文本文件(.txt)。代码使用HashMap<String,Integer>存储所有关键字及其个数,检索效率较高。可以检索...原创 2021-03-09 22:49:43 · 3471 阅读 · 7 评论 -
通讯录模拟(数据结构+JavaFX)--注释详细
题目介绍:类图:联系人对象类:package data_structure_curriculum_design.experiment5_mobile_phone_address_book_simulation;import net.sourceforge.pinyin4j.PinyinHelper;import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;import net.sourceforge.pinyin4原创 2021-01-04 18:11:54 · 8285 阅读 · 0 评论 -
24点游戏(穷举算法+JavaFX界面/回溯算法)--注释详细
题目介绍:版本一:package data_structure_curriculum_design.experiment3_24point_poker_game.version1;import javafx.application.Application;import javafx.geometry.Insets;import javafx.geometry.Pos;import javafx.scene.Scene;import javafx....原创 2021-01-04 17:51:59 · 1147 阅读 · 1 评论 -
一元多项式计算器(程序对于多项式运算非常通用、细节很多详见描述与代码)
程序支持除题目要求外的所有“任意多个”一元多项式加减运算输入:测试用例:-(2x^3+5x^4)+2x^5+(2x+5x^8-3.1x^11)+4x^6+2x^2+(7-5x^8+11x^9)+(x+x^2-x^3)+10=-2x^5+(2x+5x^8-3.1x^11)+4x^6+2x^9+(7-5x^8+11x^9)+(x+x^2+x^3)+2x^7=(2x+5x^8-3.1x^11)+(7-5x^8+11x^9)=(6x^-3-x+4.4x^2-1.2x^9)-(-7x^...原创 2020-12-17 00:45:47 · 1813 阅读 · 0 评论 -
校园导游程序(Dijkstra算法实现)
应用设计性实验1.问题描述校网导游程序: 一个校园有若干景点,如正校门、人工湖、磁悬浮列车实验室、樱花大道、图书馆、体育场体育馆和礼堂等。实现一个为来访客 人提供信息在询服务的程序,如查询景点的详细信息,查询两个景点之间的一条最短路径。2.实验要求(1)设计你所在学校的校园平面图,所含景点不少于10个。(2)来访客人可以输人任一个景点的名称,查询景点的详细信息。(3)来访客人可以输人任何两个景点的名称,查询这两个景点之间的一条最短路径。3.实现提示以图中的顶点表示校园内各景点,存放景点代号、原创 2020-12-13 16:49:53 · 4401 阅读 · 2 评论 -
改进的冒泡排序和选择排序(双向冒泡/一次遍历选出最大和最小的选择排序)C语言实现
双向冒泡排序:void doubleBubleSort(int* a, int length) {//双向冒泡排序 int temp; for (int i = length-1,k=0; i > 0; i--,k++) { int j = k; for (; j < i; j++) if (*(a + j + 1) < *(a + j)) { temp = *(a + j); *(a + j) = *(a + j + 1); *(a +原创 2020-12-05 11:41:08 · 1339 阅读 · 0 评论 -
详解初级排序算法(选择、插入、希尔shell)、归并、快速、堆
公共代码(比较元素大小、将元素在数组中的位置进行交换、判断数组是否已经有序、打印数组) public static boolean less(Comparable v, Comparable w) { return v.compareTo(w) < 0; } public static void exch(Comparable[] a, int i, int j) { Comparable t = a[i]; a[i]原创 2020-11-20 15:39:32 · 1046 阅读 · 2 评论 -
Huffman树创建(基于循序存储)以及基于Huffman树的编码
import java.util.HashMap;import java.util.List;import java.util.Map;public class HuffmanTree<T> { private HuffmanTreeArrayNode<T>[] huffmanTree; public void createHuffmanTree(List<HuffmanTreeArrayNode<T>> leafNodes){//.原创 2020-11-13 21:08:14 · 318 阅读 · 3 评论 -
二叉树的遍历(递归/非递归)、线索化、镜像(递归/非递归)、查找节点算法
import java.util.LinkedList;import java.util.Queue;import java.util.Stack;public class BinaryTree<T> { BinaryTreeNode<T> root; public BinaryTree(T data) { root = new BinaryTreeNode<>(data); }/* public Binar.原创 2020-11-13 21:04:04 · 294 阅读 · 0 评论 -
详解插入排序之希尔(shell)排序
可以传入规定排序范围的参数(low/high),进行局部排序;该程序把首次“步长”设置为需要排序数组长度的1/2,并又程序自行求出之后的一系列步长(求解规则为 下一次步长=上一次步长/2 的向上取整),直至最后一次求得步长为1; public static <T extends Comparable<T>> void shellSort(T[] array, int low, int high) { int[] delta = new int[(int原创 2020-11-09 21:20:28 · 277 阅读 · 0 评论 -
交换排序之 冒泡排序与快速排序
冒泡排序进行了flag标识,略微提高了排序效率;快速排序使用递归实现。import java.util.Random;public class ComparisonSortingAlgorithm { public static void main(String[] args) { Integer[] array = new Integer[10]; Random random = new Random(); for (int i = 0原创 2020-11-09 15:47:37 · 248 阅读 · 0 评论 -
Ackerman函数(递归与非递归算法实现)
Ackerman函数阿克曼函数是非原始递归函数的例子;它需要两个自然数作为输入值,输出一个自然数。它的输出值增长速度非常高。计算Ackerman(m,n)函数递归算法与非递归算法(利用顺序栈)import java.util.Scanner;public class SequenceStack<T> { public static void main(String[] args) { Scanner scanner =new Scanner(S...原创 2020-10-25 13:28:57 · 2879 阅读 · 1 评论 -
迷宫求解(非递归算法实现)
1.问题描述用一个m*n的长方阵表示迷宫,0和1分别表示迷宫中的通路和障碍。编程实现选择任意通路作为入口和出口,探寻从迷宫入口到出口有无通路,若有,则求出一条从入口到出口的通路;若无则给出没有通路的结论信息。2.要求(1) 实现一个以链表作为存储结构的栈类。(2) 利用栈设计一求解迷宫的非递归算法。(3) 编写测试程序,求出迷宫通路,若无通路,则输出没有通路的提示信息;若有通路,则以三元组 ( i, j, d) 的形式输出通路,其中,( i , j )指示迷宫中的一个位置坐标,d 表..原创 2020-10-25 13:15:49 · 3284 阅读 · 2 评论 -
约瑟夫环问题(Joseph)
“约瑟夫生者死者”游戏内容大致描述为:30个游客同乘一条船,因为严重超载,加上风浪大作,危险万分。因此,船长告诉乘客,只有将船上一半的旅客投入大海中,其余的人才能幸免于难。无奈,大家只得同意这种办法,并议定30个人围城一圈,由第一个人数起,依次报数,数到第9人,便把他投入大海中,然后再从他的下一个数起,数到第9人,再把他扔进大海中,如此重复地进行,直到剩下15个乘客为止。请编程模拟此过程。不带头结点,带头指针和尾指针的单线循环链表实现(参数可调控):import java.util.Scanner原创 2020-10-19 17:09:05 · 20569 阅读 · 13 评论 -
已知A,B和C为3个递增有序的顺序表,编写算法,实现删除A表中既在B表中出现,又在C表中出现的所有元素。
时间复杂度O(n),空间复杂度O(1);package sequenceList;public class RemoveThePublicElement { public static void main(String[] args) { Integer[] A = {1, 2, 3, 4, 5, 6, 6, 7}; Integer[] B = {2, 4, 6, 7, 9}; Integer[] C = {1, 2, 2, 6, 8, 1.原创 2020-10-08 18:04:14 · 2524 阅读 · 0 评论 -
数据结构与算法学习笔记
线性结构非线性结构线性结构(数组、队列、链表、栈):数据元素之前存一一对应关系。 顺序存储结构/顺序表(数组):存储元素地址连续。 链式存储结构(链表):存储元素地址不一定连续。可以充分利用内存空间。非线性结构(二维数组、多维数、广义表、树结构、图结构)。稀疏sparsearray数组和队列应用于棋盘、地图等。...原创 2020-09-04 11:15:28 · 455 阅读 · 0 评论