![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法的C++实现
文章平均质量分 77
helenandyoyo
这个作者很懒,什么都没留下…
展开
-
项目1:线性链表的基本操作
#include#define ok 1#define error 0using namespace std;typedef int Status;typedef int ElemType;typedef struct Lnode{ ElemType data; Lnode *next;} *Link,*Position;typedef struct{ Link head原创 2014-07-22 14:34:54 · 2025 阅读 · 0 评论 -
数据结构中数组的顺序存储
#include#includeusing namespace std;//--------------------数组的顺序存储表示--------------------#define MAX_ARRAY_DIM 8#define error -1#define ok 1typedef int ElemType;typedef int Status;typedef char原创 2014-08-11 11:04:56 · 2483 阅读 · 0 评论 -
稀疏矩阵的压缩存储和基本操作
#includeusing namespace std;#define MAXSIZE 20#define MAXNUM 20#define MAXCPOT 20#define ok 1typedef int Status;templateclass Triple{template friend class TSMatrix;private: int i,j; //i,j原创 2014-08-13 19:10:58 · 1480 阅读 · 0 评论 -
二叉树的创建与前序、中序和后序的递归与非递归调用
#include#include#include#includeusing namespace std;typedef char ElemType;class BiTNode{friend class BiTree;private: ElemType data; BiTNode *lchild,*rchild; //左右孩子指针};class BiTree:publi原创 2014-08-26 10:51:19 · 892 阅读 · 0 评论 -
线索二叉树的中序遍历
#include#includeusing namespace std;typedef enum{Link,Thread}PointTag; //Link==0:指针,Thread==1:线索templateclass BiTrNode{ template friend class BiTrTree;private: T data; BiTrNode *lchild,*rchi原创 2014-08-27 10:11:06 · 3020 阅读 · 1 评论 -
稀疏矩阵——行逻辑连接的顺序三元组表
#includeusing namespace std;#define MAXSIZE 20#define MAXNUM 20#define MAXCPOT 20#define MAXRC 20#define MAXCTEMP 20#define ok 1#define error 0typedef int Status;templateclass Triple{tem原创 2014-08-14 16:28:11 · 2410 阅读 · 0 评论 -
稀疏矩阵的十字链表存储
#includeusing namespace std;#define ok 1#define error 0typedef int Status;templateclass Triple{template friend class CrossSMatrix;private: int i,j; //i,j表示该非零元的行和列下标 T e; //非零元素的值 Triple原创 2014-08-14 21:17:25 · 611 阅读 · 0 评论 -
二叉排序树
#includeusing namespace std;typedef int Status;templateclass BiTNode{public: template friend class BSTree;private: T key; BiTNode *lchild,*rchild;};templateclass BSTree{public: Stat原创 2014-09-14 11:32:02 · 403 阅读 · 0 评论 -
回溯法——集合求子集
#include#includeusing namespace std;templateclass Subset{public: void Input(void); //输入集合A中的元素,存放在vecA中 void PowerSet(unsigned int i); //对集合A求子集 void Output(vector vec); //输出子集元素private:原创 2014-09-01 21:05:06 · 1772 阅读 · 0 评论 -
赫夫曼树及其应用
#include#include#includeusing namespace std;#define N 4//typedef char* HuffmanCode; //动态分配数组存储赫夫曼编码表int wt[N]={7,5,2,4}; //N个权值,分别对应A(7),B(5),C(2),D(4)templateclass HuffmanTree{public:原创 2014-09-01 17:08:44 · 600 阅读 · 0 评论 -
回溯法——四皇后问题
#include#include#includeusing namespace std;templateclass Queen{public: void Input(void); //输入棋子个数 void Output(vector &vec,int &i); //输出成功的棋盘状态数 void Trial(int &i); //进行布局函数private原创 2014-09-02 21:38:23 · 1431 阅读 · 0 评论 -
平衡二叉排序树
#includeusing namespace std;#define LH 1 //左高#define EH 0 //等高#define RH -1 //右高typedef int Status;templateclass BSTNode{public: template friend class BBSTree;private: U key; //关键字 int原创 2014-09-15 20:24:35 · 509 阅读 · 0 评论 -
折半插入排序
/*折半插入排序与直接插入排序相比,仅减少了关键字间的比较次数,而记录的移动次数未变,时间复杂度O(n*n)*/#include#includeusing namespace std;class BInsertSort{public: void Input(); //数据输入 void Insert(); //直接插入排序 void Output();//数据输出privat原创 2014-09-17 10:46:22 · 436 阅读 · 0 评论 -
直接插入排序
/*直接插入排序是指从序列的第2个元素依次与前一元素比较,从i=2趟开始比较*//*则当i=k时,表示前k个元素已经排好了序,再进行第k+1个元素与第k个元素比较*//*若<k,则将k+1的元素设置为监哨,从第k个元素依次往前与监哨比较,有大于监哨的*//*则记录后移,最后将空出的记录位置上填上监哨*//*时间复杂度O(n*n)*/#include#includeusing name原创 2014-09-17 10:08:41 · 404 阅读 · 0 评论 -
广义表的基本操作
#include#includeusing namespace std;typedef enum{ATOM,LIST}ElemTag; //ATOM==0:原子,LIST==1:子表typedef char AtomType; //原子值域类型class GLNode{friend class GList;private: ElemTag tag; //tag==ATOM表示原原创 2014-08-23 20:31:29 · 3004 阅读 · 1 评论 -
折半查找
#include#include#includeusing namespace std;templateclass Search_Bin{public: void Input_int(); //关键字录入 void Input_char(); //关键字录入 void Input_string(); //关键字录入 int Search(T key); //折半查找 vo原创 2014-09-06 17:20:46 · 409 阅读 · 0 评论 -
一元多项式的基本操作
#include#include"LinkList.h"#define NUM 4using namespace std;class Polynomial{public: //输入m项的系数和指数,建立表示一元多项式的有序链表P void CreatePolyn(polynomial &P,int m); //销毁一元多项式 void DestroyPolyn(polynomi原创 2014-07-24 19:30:16 · 1972 阅读 · 0 评论 -
栈的应用举例——数制转换
#include#include"SqStack.h"using namespace std;#define N 8void conversation(SqStack &S,SqStack &SS)//对于输入的任意一个非负十进制整数,打印输出与其等值的N进制数{ int num,e; SOP.InitStack(S); Status (*vis)(SElemType); cin原创 2014-07-26 17:18:58 · 821 阅读 · 0 评论 -
栈的基本操作
#include using namespace std;#define STACK_INIT_SIZE 5#define STACKINCREMENT 10#define ok 1;#define error 0;typedef int SElemType;typedef int Status;typedef struct{ SElemType *top; SElemTy原创 2014-07-26 15:30:53 · 1260 阅读 · 0 评论 -
栈的应用举例——迷宫求解
迷宫求解思路(求出所有的从入口到出口的路径):do{ 若当前位置可通 则{则将当前位置插入栈顶;留下足迹;若该位置是出口则{输出该成功出逃的路径;将出口从栈中删除同时擦除足迹;将出口前一个通道块也从栈中删除同时擦除足迹;顺时针向当前位置的下一个方向探索,进行下一轮循环;}否则切换当前位置的东邻方向为新的当前位置进行探索;}原创 2014-07-28 15:17:54 · 706 阅读 · 0 评论 -
栈的应用举例——括号匹配的检验
#include#include"SqStack.h"using namespace std;#define NUM 20/* 说明:用1代表"(", 用2代表“)”, 用3代表“[”, 用4代表“]”*/void Bracket(SqStack &S,SqStack &SS){ int e,m; SOP.InitStack(S);//初始化栈S SOP.InitStack(SS原创 2014-07-26 19:54:29 · 625 阅读 · 0 评论 -
栈的应用举例——行编辑程序
#include#include"SqStack.h"using namespace std;void LineEdit(SqStack &S,SqStack &SS){ SElemType e,ch; SOP.InitStack(S); SOP.InitStack(SS); ch=getchar();//从终端接收一个字符 while(ch!=EOF)//EOF为全文结束符原创 2014-07-26 20:55:32 · 1273 阅读 · 0 评论 -
单链队列的基本操作
#includeusing namespace std;//-----------------单链队列——队列的链式存储结构-----------------#define ok 1#define error 0#define COUNT 5typedef int QElemType;typedef int Status;typedef struct QNode{ QEle原创 2014-07-29 10:53:01 · 2104 阅读 · 0 评论 -
循环队列的基本操作
由于Q.real=Q.front无法判别队列是“空”还是“满”,此处条件设置为:少用一个元素空间,约定以“队头指针在队尾指针的下一位置上”作为队列呈'“满”状态的标志原创 2014-07-29 16:03:09 · 1000 阅读 · 0 评论 -
串的基本操作
#includeusing namespace std;#define ok 1#define error 0typedef int Status;//------------------串的堆分配存储表示-------------------typedef struct{ char *ch;//若是非空串,则按串长分配存储区,否则ch为NULL int length;//串长度原创 2014-08-04 16:26:23 · 5123 阅读 · 1 评论 -
银行业务的模拟程序
银行业务的模拟程序:假设某银行有四个窗口对外接待客户,且每个窗口在某时刻只能接待一位客户,客户在银行工作时间内进入银行后选择最短的一队进行排队等候。现在编制一个程序以模拟银行的这种业务活动并计算一天中客户在银行逗留的时间。前期准备:1)客户逗留时间=客户离开银行时间-客户进入银行时间2)称客户到达银行和客户离开银行这两个时刻发生的事情为“事件”3)将上述所有事件按照先后顺序原创 2014-08-01 08:22:08 · 5822 阅读 · 1 评论 -
银行业务的模拟程序
银行业务的模拟程序:假设某银行有四个窗口对外接待客户,且每个窗口在某时刻只能接待一位客户,客户在银行工作时间内进入银行后选择最短的一队进行排队等候。现在编制一个程序以模拟银行的这种业务活动并计算一天中客户在银行逗留的时间。前期准备:1)客户逗留时间=客户离开银行时间-客户进入银行时间2)称客户到达银行和客户离开银行这两个时刻发生的事情为“事件”3)将上述所有事件按照先后顺序原创 2014-07-31 19:18:50 · 1415 阅读 · 0 评论 -
建立词索引表
#include#include#include#include#include"HString.h"#include"LinkList.h"using namespace std;#define MaxBookNum 6 //假设只对6本书建立索引表#define MaxKeyNum 30 //索引表的最大容量#define MaxLineLen 30 //书目串的最大长度原创 2014-08-10 11:39:26 · 2543 阅读 · 1 评论 -
起泡排序
#include #include using namespace std; class BubbleSort { public: void Input(); //数据输入 void Insert(); //直接插入排序 void Output();//数据输出 private: vector vec;//vec[原创 2014-09-18 15:32:40 · 379 阅读 · 0 评论