数据结构
文章平均质量分 77
蒙昧的自己
这个作者很懒,什么都没留下…
展开
-
关于栈的应用,完全基于类的实现
//头文件,4个头文件一个是节点的头文件,一个是栈的实现的头文件,一个是模拟的头文件#ifndef LINKNODE_H#define LINKNODE_H#includeusing namespace std;templateclass LinkNode{public: T data; LinkNode* link; LinkNode(){ }原创 2015-11-07 10:41:23 · 230 阅读 · 0 评论 -
银行就好系统,该程序存在问题,在顾客进入窗口开始服务的时候,一号窗口会出现在后面开始服务,如果有解决方案,请告诉我谢谢!
//该头文件中存放了所有的变量#ifndef VARIABLE_H#define VARIABLE_H//定义窗口数量const int Nor_Max = 3;const int VIP_Max = 1;const int Offic_Max = 1;const int ServedTime = 4;const int SpaceTime = 2;原创 2015-10-27 21:03:03 · 752 阅读 · 0 评论 -
计算树的深度,存储结构是二叉链表
//在二叉树中如何获得树的深度//方法1:递归算法--先计算出左右子树的深度,之后比较两者之间的大小关系,取大的那个数值,然后将此数值加一后返回//该返回值,即树的深度//方法2:利用队列,每遍历树的一层,就将树的深度deepth+1//该方法要注意的地方:1,设置变量获取每一层中的节点数,然后根据该节点数做循环,每循环一次都要将该节点//从队列里删除,并将该节点的左右孩子入队//2,特殊点是每一原创 2015-11-14 17:32:05 · 1447 阅读 · 0 评论 -
给出先序序列,中序序列恢复二叉树
//给出先序序列,中序序列恢复出二叉树的方法//方法1:利用递归的方法,首先先找出根节点,然后有先序和后序的特点可知:先序序列中在根节点左边的是左子树,根节点右面的是右子树//有此来,进行递归,便可以恢复出二叉树//方法2:方法2中栈的利用只是来存取,节点和先序中每个数据在后序的位置,利用pos 来记录每个位置的值//该非递归的主要思想就是在后序序列中左节点的位置在右节点之前,也就原创 2015-11-15 21:14:24 · 833 阅读 · 0 评论 -
给出二叉树,将二叉树进行中序线索化,在根据中序线索化二叉树,找出给定节点的前序后继节点,和给出节点的后序后继节点
该程序,最部分功能进行了详细的说明,在给别程序块中给出了详细的算法和注释#ifndef BINARYTREENODE_H#define BINARYTREENODE_Htemplateclass BinaryTreeNode{public: T data; int leftTag; int rightTag; BinaryTreeNode* leftChild; Binary原创 2015-11-20 13:00:08 · 3636 阅读 · 6 评论 -
环形队列,用tag来标记队列的空(0)与满(1)
原创 2015-10-20 20:48:32 · 798 阅读 · 0 评论 -
二叉搜索树的插入,删除,查找操作
//头文件//BinaryTreeNode.h#ifndef BINARYTREENODE_H#define BINARYTREENODE_Htemplateclass BinaryTreeNode{public: T data; BinaryTreeNode* leftChild; BinaryTreeNode* rigthChild; BinaryTreeNode* par原创 2015-11-21 19:35:15 · 371 阅读 · 0 评论 -
关于二叉树宽度的算法包括递归和非递归
//方法1:关于递归算法的实现,递归算法的实现包含两个函数,在这个函数中需要借助数组来实现//实现的具体方式,是在循环遍历的过程中,将每一层中的节点数都存储到相应的数组空间中//在对二叉树进行遍历结束后,在对数组进行处理,便可以获得,相应的二叉树的宽度//子啊该方法的实现机制中,利用了辅助函数//方法2:关于非递归的算法,就是利用队列的原理,这一原理在求树的深度那一篇博文,便已经涉及到了//他的原原创 2015-11-16 23:09:39 · 4760 阅读 · 0 评论 -
字符串的操作
//头文件#ifndef MYSTRING_H#define MYSTRING_H#include#includeusing namespace std;const int stringLnegth = 100;class StringIndexOutOfBounds{};class String{private: char* buffer;//原创 2015-11-01 17:32:16 · 230 阅读 · 0 评论 -
含有头结点的单链表,实现部分功能,希望大家能够给予指点
//LinkNode节点类#ifndef LINKNODE_H#define LINKNODE_Htemplatestruct LinkNode{ T data; LinkNode *next; LinkNode(LinkNode *str = NULL){ next = str; } LinkNode(T tempData, LinkNode *str原创 2015-09-24 23:40:15 · 427 阅读 · 0 评论 -
二叉树中包括高度,深度,节点数,宽度,最大值等的递归和非递归方法
//头文件//BinaryTreeNode.h#ifndef BINARYTREENODE_H#define BINARYTREENODE_Htemplateclass BinaryTreeNode{public: BinaryTreeNode* leftChild; BinaryTreeNode* rightChild; T data; BinaryTreeNode(){原创 2015-11-19 16:46:16 · 520 阅读 · 0 评论 -
医院管理系统(实现功能:浏览医院的整体结构,给定任意节点输出该节点信息就子节点信息,计算在给出点之间的“病房的数量”)
//头文件(包括HosPital.h,TreeNode.h,Tree.h)//HosPital.h#ifndef HOSPARTNODE_H#define HOSPARTNODE_H#include#includeusing namespace std;class HosPartNode{private: int num; string name;public: HosPa原创 2015-12-10 23:29:18 · 1136 阅读 · 0 评论 -
二叉树三种遍历方式,有先序,中序或者后序,中序恢复二叉树等操作
//头文件//BinaryTreeNode.h#ifndef BINARYTREENODE_H#define BINARYTREENODE_Htemplateclass BinaryTreeNode{public: T data; BinaryTreeNode* leftChild; BinaryTreeNode* rightChild; BinaryTreeNode(){原创 2015-11-19 16:41:02 · 519 阅读 · 0 评论 -
图的定义,存储结构是邻接矩阵(无向图,包含带权图)
//头文件//Edge.h#ifndef EDGE_H#define EDGE_H#includeusing namespace std;templateclass Edge{public: //边的起始与终点 int start, end; //权重 T weight; Edge(); Edge(int st, int en, T wei); bool operat原创 2015-12-14 18:47:54 · 5627 阅读 · 0 评论 -
优先队列的初始化,删除,插入操作
//头文件//BinaryTreeNode.h#ifndef BINARYTREENODE_H#define BINARYTREENODE_Htemplateclass BinaryTreeNode{public: T data; int position; BinaryTreeNode* leftChild; BinaryTreeNode* rightChild; Bina原创 2015-11-27 23:21:50 · 785 阅读 · 0 评论 -
带权有向图
//头文件Edge.h Graph.h//Edge.h//该函数的目的是记录带权有向图#ifndef EDGE_H#define EDGE_Htemplateclass Edge{public: //该图主要包括(起点,终点,权重) int start; int end; T weight; Edge(); Edge(int st, int en, T wei); b原创 2015-12-16 23:24:53 · 3115 阅读 · 0 评论 -
优先队列,由于优先队列的树形结构是完全二叉树,所以可以使用数组的形式去存储,我的上一个博客是用二叉树的形式去存储优先队列的
//处理优先队列的头文件#ifndef MAXHEAP_H#define MAXHEAP_Htemplateclass MaxHeap{private: T* heapArray; int CurrSize;//当前堆中的元素的个数,从1开始 int MaxSize;//对所能容纳的元素数目public: //因为是完全二叉树,所以用数组来存储 MaxHeap(); ~Max原创 2015-12-02 14:28:45 · 663 阅读 · 0 评论 -
排序算法中的快速排列中的partition函数
#include#includeusing namespace std;/* 算法思想:根据一个基准数,每一次执行过后都会所有的比基准数大的都会在他的右边 比他小的都会在基准数的左边*/int partition(int arr[], int left, int right);void QuitSort(int arr[], int left, int right);int原创 2016-05-30 15:57:21 · 610 阅读 · 0 评论 -
顺序表的c++实现,该模板类实现了插入,删除,清空,[]的重载等方法
https://code.csdn.net/snippets/1112176.js">>//模板类头文件#ifndef SELFLIST_H#define SELFLIST_Htemplate class SelfList{private: T* arrayList; int maxLength; int currentLength; int po原创 2015-09-20 22:32:51 · 980 阅读 · 0 评论 -
顺序表来实现函数:删除最小值并返回删除元素,空出位置用尾部元素来填补,删除与给定值相同的所有的元素,删除给定值s,t(s<t)之间的元素
//头文件实现类#includeusing namespace std;templateclass List{private: T* listArray; int maxSize; int position; int currentLength;public: List();//默认构造函数 List(int size);//含参数的原创 2015-10-08 20:49:36 · 665 阅读 · 0 评论 -
中缀表达式转化为后缀表达式,并计算后缀表达式
//头文件//该函数中用了栈的特点,所以增加了栈的头文件,下面是栈的头文件#ifndef STACK_H#define STACK_Htemplateclass Stack{private: const static int maxSize = 100; T data[maxSize]; int top;public: Stack()原创 2015-10-22 16:48:09 · 290 阅读 · 0 评论 -
栈的基本操作模板类,包括栈的压入,出栈,删除栈顶元素,清空栈等操作
//头文件#ifndef STACKLIST_H#define STACKLIST_H#include#include#includeusing namespace std;templateclass StackList{private: T* stackList; int maxSize;//栈的最大空间 int top;//标记栈顶原创 2015-10-11 23:01:29 · 1267 阅读 · 0 评论 -
设ha和hb分别是两个带头节点的费递减有序单链表的表头指针,设计以算法,将将两个有序链表合成一个非递减的有序单链表,该程序以以前发表的博客中的链表中的区别在与该立案表带有头结点
//头文件#ifndef HEADLIST_H#define HEADLIST_H#includeusing namespace std;templateclass LinkNode{public: T data; LinkNode* link; LinkNode() { //默认构造函数 } LinkNode(const T va原创 2015-10-09 17:09:22 · 6316 阅读 · 0 评论 -
给出一个循环双链表,p指向第一个元素值为x的节点,设计算法删除节点*p
//头文件#ifndef DOUBLELIST_H#define DOUBLELIST_H#includeusing namespace std;templateclass LinkNode{public: T data; LinkNode* link; LinkNode* prev; LinkNode(const T item, LinkNode*原创 2015-10-09 15:25:56 · 3277 阅读 · 0 评论 -
关于在链表中用递归形式,求出链表中的最大值,及节点数和平均值的函数
//首先在头文件中加入以下这些函数,在使用下列函数时,都不能直接使用下列函数,而是要借助一些其它函数,所以可以把这些函数当做私有函数成员//在头文件中在增加三个函数分别来处理一下几个函数,下面这三个函数必须是公有函数成员void PrintMaxData(){ //谁调用函数,这个head就是谁的 LinkNode* str=head; T maxDa原创 2015-10-23 17:12:25 · 2083 阅读 · 0 评论 -
队列的顺序实现,包括在链表形式实现中的所有功能
原创 2015-10-19 22:45:33 · 254 阅读 · 0 评论 -
队列的链表形式的实现,实现了部分功能,该链表不包含头结点
//节点的头文件#ifndef LINKNODE_H#define LINKNODE_H#includeusing namespace std;//节点的头文件templateclass LinkNode{public: T data; LinkNode* link; LinkNode(){ //默认构造函数 } LinkNod原创 2015-10-19 09:32:59 · 298 阅读 · 0 评论 -
假设表达式中允许包括3中括号:(,[,{,设计一个算法采用顺序栈判断表达式中的括号是否正确配对
#include#include#include#includeusing namespace std;int main(int argc, char argv[]){ ifstream cin("F:\\test.txt"); string s; char ss[100]; stacktemp; while (cin.getline(ss, 100原创 2015-10-18 20:09:52 · 8592 阅读 · 1 评论 -
设计一个算法把一个十进制整数转化为二至九进制之间的任意进制数输出
#include#includeusing namespace std;stackresult;void ScaleChange(int value){ cout << "输入你需要将要十进制转化成的进制"; int data; cin >> data; bool flag = true; int temp = 0; while (flag) {原创 2015-10-18 19:12:45 · 3495 阅读 · 0 评论 -
使用栈的技术,解决括号配对的问题
#include#include#include#includeusing namespace std;int main(int argc, char argv[]){ ifstream cin("F:\\test.txt"); stackOperator; //记录要配对的符号串中,“(”在该串中的位置 stackposition; strin原创 2015-10-16 22:40:02 · 236 阅读 · 0 评论 -
一连浪了好几天了,一直没好好的学习,希望在运动会结束后能够好好的认真学习,下面是关于栈的链表形式的有关函数的实现,与上一个实现形式有所差别
//LinkNode.h#ifndef LINKNODE_H#define LINKNODE_H#includeusing namespace std;templateclass LinkNode{public: T data; LinkNode* link; LinkNode(){ } LinkNode(T value, LinkN原创 2015-10-16 00:37:24 · 444 阅读 · 0 评论 -
栈模板的链表实现(包含头结点),实现了栈的压入,栈的弹出,返回栈顶元素,排序等操作
//头文件#ifndef STACKLIST_H#define STACKLIST_H#include#include#includeusing namespace std;templateclass LinkNode{ //该类的作用是作为节点public: T data; LinkNode* link; LinkNode(){原创 2015-10-12 20:34:24 · 1080 阅读 · 0 评论 -
上述博客中的程序均存在bug,尤其是链表类的程序中,需要在其中添加排序函数!
templatevoid doubleList::Sort(){ vectortemp; LinkNode* p = head; while (p) { temp.push_back(p->data); p = p->link; } p = head; sort(temp.begin(), temp.end()); for (int i = 0;原创 2015-10-09 19:25:31 · 442 阅读 · 1 评论 -
设A和B是两个单链表,其表中元素递增有序,使用一算法将A和B归并成一个案元素递减有序的单链表C(该程序中的功能包含了上几个博客中的部分功能)
//头文件#ifndef LIST_H#define LIST_H#include#includeusing namespace std;templateclass LinkNode{public: T data; LinkNode* link; LinkNode() { } LinkNode(const T& item,LinkNo原创 2015-10-09 17:05:14 · 15483 阅读 · 0 评论 -
设双链表表示的线性表L=(a1,a2,a3.....an)将L改造为L=(a1,a3,....an...a4,a2)
//头文件#ifndef DOUBLELIST_H#define DOUBLELIST_H#includeusing namespace std;templateclass LinkNode{public: T data; LinkNode* link; LinkNode* prev; LinkNode(const T value, Link原创 2015-10-09 15:31:52 · 4369 阅读 · 0 评论 -
求链表中的最大值,节点个数,平均值
//头文件#ifndef LIST_H#define LIST_H#include#includeusing namespace std;templateclass LinkNode{public: T data; LinkNode* link; LinkNode() { } LinkNode(const T& item,LinkNo原创 2015-10-08 23:21:14 · 2507 阅读 · 0 评论 -
给一个不带头结点的单链表,写出将链表倒置的算法
//头文件#ifndef LIST_H#define LIST_H#include#includeusing namespace std;templateclass LinkNode{public: T data; LinkNode* link; LinkNode() { } LinkNode(const T& item,LinkNo原创 2015-10-08 23:01:54 · 2111 阅读 · 1 评论 -
快速排序算法中的partition函数的应用
#include#includeusing namespace std;//根据已经给出位置的基准数来对数组进行排序void partition_pos(int arr[], int left, int right, int pos);//给出相应的值来确定位置,并根据它来进行排序void partition_value(int arr[], int left, int right,原创 2016-05-30 16:28:59 · 702 阅读 · 0 评论