数据结构教程
文章平均质量分 78
seu_nuaa_zc
这个作者很懒,什么都没留下…
展开
-
串——顺序存储结构
该文章主要介绍串的顺序存储结构以及相关运算。头文件:SqString.h#ifndef SQSTRING_H_#define SQSTRING_H_#include const int MaxSize = 100;class SqStringClass //顺序串类{ char *data; //存放串中元素 int length; //串中字原创 2017-06-16 20:11:34 · 480 阅读 · 0 评论 -
栈——顺序存储结构及其基本运算
该文章主要介绍栈的顺序存储结构以及相关运算。头文件:SqStack.htemplate class SqStackClass //顺序栈类{ T *data; //存放栈中元素 int top; //栈顶指针public: //===============顺序栈的基本运算算法====================== SqStackCla原创 2017-06-12 23:08:57 · 1266 阅读 · 0 评论 -
栈——链式存储结构及其基本运算
该文章主要介绍栈的链式存储结构以及相关运算。头文件:LinkStack.h#ifndef LINKSTACK_H_#define LINKSTACK_H_const int MaxSize = 100;template struct LinkStack //链栈结点类{ T data; //数据域 LinkStack *next; //指针域};templa原创 2017-06-12 23:26:38 · 526 阅读 · 0 评论 -
线性表的应用——求解两个多项式相加问题描述(顺序表求解)
问题描述:假设一个多项式形式为:p(x)=c1*x^(e1)+c2*x^(e2)+...+cm*x^(em);其中ei(1≤i≤m)为整数类型的指数,并且没有相同指数的多项式项;ci(1≤i≤m)为实数类型的序数。编写求两个多项式相加的程序。代码示例:#include using namespace std;const int MaxSize = 20;struct Poly原创 2017-06-13 09:04:49 · 2183 阅读 · 0 评论 -
线性表的应用——求解两个多项式相加问题描述(链表求解)
问题描述:假设一个多项式形式为:p(x)=c1*x^(e1)+c2*x^(e2)+...+cm*x^(em);其中ei(1≤i≤m)为整数类型的指数,并且没有相同指数的多项式项;ci(1≤i≤m)为实数类型的序数。编写求两个多项式相加的程序。代码示例:#include using namespace std;const int MAX = 10;struct PolyNo原创 2017-06-13 09:06:06 · 340 阅读 · 0 评论 -
栈——顺序存储结构及其基本运算
该文章主要介绍栈的顺序存储结构以及相关运算。头文件:SqStack.htemplate class SqStackClass //顺序栈类{ T *data; //存放栈中元素 int top; //栈顶指针public: //===============顺序栈的基本运算算法====================== SqStackCla原创 2017-06-13 09:08:09 · 285 阅读 · 0 评论 -
栈的应用——求解简单算术表达式值
问题描述:这里限定的简单算术表达式求值问题是:用户输入一个包含“+”、“-”、“*”、“/”、正整数和圆括号的合法数学表达式,计算该表达式的运算结果。如:“2+4*(5-1)”=18。代码示例:#include #include "SqStack.cpp" //包含顺序栈类模板using namespace std;class ExpressClass //求表原创 2017-06-13 10:37:36 · 806 阅读 · 0 评论 -
栈的应用——求解迷宫问题
问题描述:给定一个M×N的迷宫图,求一条从指定入口到出口的路径。假设迷宫图如图所示(M=10,N=10),其中的方块图表示迷宫。对于图中的每个方块,用空白表示通道,用阴影表示墙。要求所求路径必须是简单路径,即在求得的路径上不能重复出现同一通道块。数据组织:为了表示迷宫,设置一个数组a,其中每个元素表示一个方块的状态,为0时表示对应方块是通道,为1时表示对应方块不可走。为了算法方便,在一原创 2017-06-13 11:31:14 · 2491 阅读 · 0 评论 -
线性表——顺序存储结构
该文章主要介绍线性表的顺序存储运算以及相关运算。头文件:SqList.h#ifndef SQLIST_H_#define SQLIST_H_template class SqListClass //顺序表类{ T *data; //存放顺序表中元素 int length; //存放顺序表的长度public: //================原创 2017-06-09 15:55:57 · 356 阅读 · 0 评论 -
队列——顺序存储结构及其基本运算(非循环队列)
该文章主要介绍非循环队列的顺序存储结构以及相关运算。头文件:SqQueue.htemplate class SqQueueClass //非循环队队列类模板{ T *data; //存放队中元素 int front, rear; //队头和队尾指针public: //==============非循环队基本运算算法===================原创 2017-06-13 14:53:15 · 416 阅读 · 0 评论 -
队列——顺序存储结构及其基本运算(循环队列)
该文章主要介绍循环队列的顺序存储结构以及相关运算。头文件:CSqQueue.htemplate class SqQueueClass1 //循环队列类模板{ T *data; //存放队中元素 int front, rear; //队头和队尾指针public: //================循环队基本运算算法=====================原创 2017-06-13 15:24:38 · 797 阅读 · 0 评论 -
队列——顺序存储结构及其基本运算(循环队列的另一种表达方式)
问题描述:对于循环队列来说,如果知道队头指针和队列中元素个数,则可以计算出队尾指针。也就是说,可以用队列中元素个数代替队尾指针。设计出这种循环队列的进队、出队、判队空和求队中元素个数的算法。示例代码:#include using namespace std;const int MaxSize = 5; //队大小template class SqQueueClass2 /原创 2017-06-13 15:31:15 · 1231 阅读 · 0 评论 -
队列——链式存储结构及其基本运算
该文章主要介绍队列的链式存储结构以及相关运算。头文件:LinkQueue.htemplate struct LinkNode //链队数据结点类型{ T data; //结点数据域 LinkNode *next; //指向下一个结点};template struct LinkQueue //链队结点类型{ LinkNode *front;原创 2017-06-13 16:04:52 · 983 阅读 · 0 评论 -
队列——链式存储结构及其基本运算(链队列的另一种表达方式)
问题描述:采用一个不带头结点只有一个尾结点指针rear的循环单链表存储队列,设计出这种链队的进队、出队、判队空和求队中元素个数的算法。 代码示例:#include using namespace std;template struct LinkNode //链队数据结点类型{ T data; //结点数据域 LinkNode *next; //指原创 2017-06-13 16:10:32 · 1313 阅读 · 2 评论 -
线性表的应用——求解两个多项式相加问题描述(链表求解)
问题描述:假设一个多项式形式为:p(x)=c1*x^(e1)+c2*x^(e2)+...+cm*x^(em);其中ei(1≤i≤m)为整数类型的指数,并且没有相同指数的多项式项;ci(1≤i≤m)为实数类型的序数。编写求两个多项式相加的程序。示例代码:#include using namespace std;const int MAX = 10;struct PolyNode原创 2017-06-12 22:16:30 · 609 阅读 · 0 评论 -
线性表的应用——求解两个多项式相加问题描述(顺序表求解)
问题描述:假设一个多项式形式为:p(x)=c1*x^(e1)+c2*x^(e2)+...+cm*x^(em)。其中ei(1≤i≤m)为整数类型的指数,并且没有相同指数的多项式项;ci(1≤i≤m)为实数类型的序数。编写求两个多项式相加的程序。示例代码:#include using namespace std;const int MaxSize = 20;struct PolyEl原创 2017-06-12 21:35:49 · 2083 阅读 · 0 评论 -
串——链式存储结构
该文章主要介绍串的链式存储结构以及相关运算。头文件:LinkString.h#ifndef LINKSTRING_H_#define LINKSTRING_H_#include struct LinkNode //链串结点类型{ char data; //存放一个字符 LinkNode *next; //指向下一个结点};class LinkStrin原创 2017-06-16 20:30:57 · 1344 阅读 · 0 评论 -
稀疏矩阵
该文章介绍稀疏矩阵的相关用法。头文件:SMatrix.h#include const int MAXR = 20; //稀疏矩阵最大行数const int MAXC = 20; //稀疏矩阵最大列数const int MaxSize = 100; //三元组顺序表最大元素个数struct TupNode //单个三元组的类型{ int r; //行号 int原创 2017-06-16 20:48:07 · 531 阅读 · 0 评论 -
线性表——链式存储结构之单链表
该文章主要介绍线性表的链式存储运算以及相关运算—单链表。头文件:LinkList.htemplate struct LinkList //单链表结点类型{ T data; //存放数据元素 LinkList *next; //指向下一个结点的域};template class LinkListClass //单链表类{原创 2017-06-09 17:01:14 · 304 阅读 · 0 评论 -
线性表——链式存储结构之双链表的应用
题目:设有一个双链表对象L,每个结点中除有prior、data和next这3个域外,还有一个访问频度域freq,在链表被起用之前,其值均初始化为零。每当进行LocateElem1(e)运算时,令元素值为e的结点中freq域的值加1,并调整表中结点的次序,使其按访问频度的递减序排列,以便使频繁访问的结点总是靠近表头。设计满足上述要求的LocateElem1算法和完整的程序,并用相关数据进行测试。原创 2017-06-09 23:07:13 · 721 阅读 · 0 评论 -
二叉树
该篇文章介绍二叉树的一些常用算法。头文件:BinaryTree.h#pragma once#includestruct BinaryTreeNode{ int m_nValue; BinaryTreeNode* m_pLeft; BinaryTreeNode* m_pRight;};//===二叉树的基本操作原创 2017-06-23 10:28:49 · 150 阅读 · 0 评论 -
哈夫曼树
该篇文章主要求解哈夫曼编码代码示例:#include using namespace std;const int MaxLeng=50; //哈夫曼编码最大长度const int MaxSize=100; //最多总结点个数template struct HTNode //哈夫曼树结点类{ T data; //结点值 double weight; //原创 2017-06-23 10:47:28 · 260 阅读 · 1 评论 -
图
该篇文章主要介绍图的基本运算头文件:Graph.h#ifndef GRAPH_H_#define GRAPH_H_#include #include using namespace std;const int MAXV = 100; //图中最多的顶点数const int MAXL = 50; //顶点信息的最大字符个数const int INF = 32767;原创 2017-06-23 10:58:42 · 258 阅读 · 0 评论 -
线性表——链式存储结构之循环单链表
该文章主要介绍线性表的链式存储运算以及相关运算—循环单链表。头文件:CLinkList.htemplate struct LinkList //循环单链表结点类型{ T data; //存放数据元素 LinkList *next; //指向下一个结点的域};template class CLinkListClass //循环单原创 2017-06-12 19:25:30 · 348 阅读 · 0 评论 -
线性表——链式存储结构之双链表
该文章主要介绍线性表的链式存储运算以及相关运算—双链表。头文件:DLinkList.htemplate struct DLinkList //双链表结点类型{ T data; //存放数据元素 DLinkList *prior; //指向前一个结点的域 DLinkList *next; //指向下一个结点的域};templat原创 2017-06-09 22:49:10 · 347 阅读 · 0 评论 -
线性表——链式存储结构之循环单链表的应用
题目:编写一个程序求解约瑟夫(Joseph)问题。有n个小孩围成一圈,给他们从1开始依次编号,从编号为1的小孩开始报数,数到第m个小孩出列,然后从出列的下一个小孩重新开始报数,数到第m个小孩又出列,…,如此反复直到所有的小孩全部出列为止,求整个出列序列。如当n=6,m=5时的出列序列是5,4,6,2,3,1。代码示例:#include using namespace std;str原创 2017-06-12 19:39:34 · 355 阅读 · 0 评论 -
线性表——链式存储结构之循环双链表
该文章主要介绍线性表的链式存储运算以及相关运算—循环双链表。头文件:CDLinkList.htemplate struct DLinkList //循环双链表结点类型{ T data; //存放数据元素 DLinkList *prior; //指向前一个结点的域 DLinkList *next; //指向下一个结点的域};temp原创 2017-06-12 20:46:42 · 312 阅读 · 0 评论 -
队列的应用——求解迷宫问题
代码示例:#include using namespace std;const int MaxSize = 20; //迷宫最大行、列数const int QueueSize = 100; //顺序队大小struct Box //方块结构体类型{ int i; //方块的行号 int j; //方块的列号 int pre;原创 2017-06-13 16:55:07 · 4692 阅读 · 0 评论