![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 56
java_xiaoer
这个作者很懒,什么都没留下…
展开
-
C++递归实现全排列
实现全排列是递归的一个初级应用,主要思想就是,通过每次遍历输出一个结果。 下面的函数实现的效果就是输入一组字符,输出以‘,’分隔的全排列,最多10个,如果有空格或换行,则提前结束。//Permutation.cpp 通过递归实现全排列#include<iostream>using std::cout;using std::cin;using std::endl;const int MAX原创 2015-10-18 19:31:18 · 1280 阅读 · 0 评论 -
C++利用递归生成子集
利用递归生成子集是递归的一个简单应用,主要思路是通过一个bool数组来标识一个元素是否在生成的子集内,从而输出所有子集。 下面的程序可以实现这个功能,空集直接不输出,元素间用空格隔开。#include<iostream>using std::cout;using std::cin;using std::endl;const int MAX = 10;template<class T>voi原创 2015-10-18 21:00:59 · 3063 阅读 · 0 评论 -
排序算法合集
排序算法有很多中,我在这里只能粗略地介绍其中的6种,有什么不当之处还望读者多多指教。 为了方便起见,在这里假设排序为升序排列,用C++实现。选择排序选择排序是较为简单的一种排序方式,特点是在当前所指的元素前找比当前元素小的元素,如果找到就交换位置,是一种不稳定的排序方式,平均时间复杂度为O(n^2)。 具体实现:for (int i = 1; i < n; i++) {//设定list[i]原创 2016-01-01 14:07:54 · 457 阅读 · 0 评论 -
链表实现的线性表
这是一个很简单的链表实现的线性表,提供了自表首插入元素、从表尾插入元素、删除指定元素、搜索表中是否有指定元素、 输出链表的操作,还有通过链表遍历器来实现链表反序输出和有序链表合并的方法。//MyException.hclass OutofBounds{public: OutofBounds(){ }};//LinkedList.cpp#include "MyException.h"#原创 2016-01-01 14:26:29 · 577 阅读 · 0 评论 -
利用栈和队列计算带有括号的表达式(纯理论)
可以使用将中缀表达式转为后缀的方法。 在这里我以一个例子来说明:先将9+(3-1)*3+10/2转为后缀表达式9 3 1 - 3 * + 10 2 / +,再通过计算后缀表达式得到20这个结果。在这里简单的介绍一下转换原则:1.当读到一个操作数时,立即将它放到输出中。操作符则不立即输出,放入栈中。遇到左圆括号也推入栈中。2.如果遇到一个右括号,那么就将栈元素弹出,将符号写出直到遇到一个对应的左括号原创 2016-01-04 11:26:04 · 1350 阅读 · 0 评论 -
矩阵和散列表
目的: 1、创建三对角矩阵类,采用按列映射方式,提供 store 和 retrieve 方法。 2、创建下三角矩阵类,采用按列映射方式,提供 store 和 retrieve 方法。 3、创建稀疏矩阵类,采用行主顺序把稀疏矩阵映射到一维数组中,实现稀疏矩阵的转置和两个稀疏矩阵的加法操作。 4、使用散列表设计实现一个字典,假设关键字为整数且 D 为 961,在字典 中插入随机产生的 500 个原创 2016-01-24 13:38:44 · 2471 阅读 · 1 评论 -
堆栈和队列的应用
目的: 1、计算数学表达式的值。 输入数学表达式,输出表达式的计算结果。 数学表达式由单个数字和运算符“+”、“-”、“*”、“/”、“(”、“)”构成,例如 2 + 3 * ( 4 + 5 ) – 6 / 4。假定 表达式输入格式合法。 2、以一个 m*n 的长方阵表示迷宫,0 和 1 分别表示迷宫中的通路和障碍。 设计一个程序,对任意设定的迷宫,求出一条从入口到出口的通路,或得出没有通路的原创 2016-01-24 21:28:16 · 754 阅读 · 0 评论 -
二叉树操作
1、创建二叉树类。二叉树的存储结构使用链表。 2、提供操作:前序遍历、中序遍历、后序遍历、层次遍历、计算二叉树结点数目、计算二叉树高度。 3、对建立好的二叉树,执行上述各操作。 4、接收键盘录入的二叉树前序序列和中序序列(各元素各不相同),输出该二叉树的后序序列。二叉树是一种典型的非线性数据结构,它最基础的操作就是遍历,其它操作都可以视为从遍历上延伸出来的。而且,由于二叉树结构本身就是递归定义原创 2016-02-14 13:50:41 · 644 阅读 · 0 评论 -
搜索树和链表实现的堆
目的: 1、创建最大堆类。最大堆的存储结构使用链表。 2、提供操作:堆的插入、堆的删除。堆的初始化。Huffman 树的构造。二叉搜索树的构造。 3、接收键盘录入的一系列整数,输出其对应的最大堆、Huffman 编码以及二叉搜索树。 4、堆排序。堆是完全二叉树,通常是用数组实现的。但是在这里题目有要求,所以我们要思考链表如何保持完全二叉树的结构。 换句话说我们就是要找到完全二叉树最后一个元原创 2016-02-17 15:27:18 · 926 阅读 · 1 评论