题目 赫夫曼编码 解决代码及点评 // 赫夫曼编码.cpp : 定义控制台应用程序的入口点. // #include <iostream> #include <stdio.h> using namespace std; #define MAXBIT 100 #define MAXVALUE 10000 #define MAXLEAF 30 #define MAXNODE MAXLEAF*2 -1 typedef struct { int bit[MAXBIT]; int s…
 题目 最短路径 解决代码及点评 // 26最短路径dijstra.cpp : 定义控制台应用程序的入口点. // #include <iostream> using namespace std; const int N=1000; /* 单源最短路径:Dijkstra算法 算法思想: 从源点开始,每次合并距离源点所在集合最近的点到源点集合,距离用dis[]记录, 合并之后应用松弛原理更新dis[]的值.直到所有的点均在源点集合,或者发现了图不连通. 应用范围: 有向图,边的权值非负.…
 题目 基于数组的队列 解决代码及点评 #include <stdio.h> #include <stdlib.h> #include <time.h> #include <malloc.h> #include<assert.h> #define N 10 typedef struct Queue { int nHead; int nTail; int nLen; int *pnArr; }Queue, *PQueue; PQueue Cr…
 题目 基于链表的队列实现 解决代码及点评 #include <stdio.h> #include <stdlib.h> #include <time.h> #include <malloc.h> #include<assert.h> typedef struct QNode { int nValue; struct QNode *pNext; }QNode, *PQNode; typedef struct { PQNode pHead;…
 题目 拓扑排序 解决代码及点评 // 拓扑排序.cpp : 定义控制台应用程序的入口点. // // 深度优先.cpp : 定义控制台应用程序的入口点. // // 图的邻接表表示.cpp : 定义控制台应用程序的入口点. // #include <iostream> #include <stack> #include <queue> #include <array> using namespace std; template<class T&…
 题目 图的邻接矩阵表示 解决代码及点评 // 图的邻接矩阵表示.cpp : 定义控制台应用程序的入口点. // #include <iostream> #include <list> using namespace std; #define MAXVEX 10 #define INFINITY 65535 typedef struct { char vexs[MAXVEX]; int arc[MAXVEX][MAXVEX]; int numVertexes; int num…
 题目 图的邻接表表示 解决代码及点评 // 图的邻接表表示.cpp : 定义控制台应用程序的入口点. // #include <iostream> #include <stack> using namespace std; template<class T> class EdgeNode { public: T adjvex; EdgeNode *pnext; }; template<class T> class Graph { public: Gr…
 题目 深度优先 解决代码及点评 // 深度优先.cpp : 定义控制台应用程序的入口点. // // 图的邻接表表示.cpp : 定义控制台应用程序的入口点. // #include <iostream> #include <stack> #include <queue> #include <array> using namespace std; template<class T> class EdgeNode { public: T a…
 题目 区间树 解决代码及点评 #include <stdio.h> #include <string.h> #include <iostream> #define MAX(x,y) ((x)>(y)?(x):(y)) #define MIN(x,y) ((x)<(y)?(x):(y)) #define NL 262144 struct Seg { int l, r; int w; }t[NL*2]; int h, w, row; void build…
 题目 强连通分支 解决代码及点评 // 强连通分支.cpp : 定义控制台应用程序的入口点. // #include<iostream> #define MAX 100 using namespace std; //深度搜索访问节点层次标志枚举变量 enum Color{white,gray,black}; //边端点结构体 struct edgeNode { int no; //边尾端的序号 char info; //边端的名称 struct edgeNode * next; //下…
 题目 活动选择问题 解决代码及点评 // 活动选择问题.cpp : 定义控制台应用程序的入口点. // #include<iostream> #define N 100 using namespace std; struct Activity { int number; //活动编号 int begin; //活动开始时间 int end; //活动结束时间 bool flag; //此活动是否被选择 }; //对于活动集,按照结束时间递增排序,使用快速排序 void fast_sor…
 题目 红黑树 解决代码及点评 // 红黑树.cpp : 定义控制台应用程序的入口点. // #include <stdio.h> #include <stdlib.h> #include <string.h> typedef int key_t; typedef int data_t; typedef enum color_t { RED = 0, BLACK = 1 }color_t; typedef struct rb_node_t { struct rb_…
 题目 广度优先搜索 解决代码及点评 // 图的邻接表表示.cpp : 定义控制台应用程序的入口点. // #include <iostream> #include <stack> #include <queue> #include <array> using namespace std; template<class T> class EdgeNode { public: T adjvex; EdgeNode *pnext; }; tem…
 题目 斐波那契堆 解决代码及点评 // 斐波那契堆.cpp : 定义控制台应用程序的入口点. // #include<iostream> #include<cstdio> #include<cstdlib> #include<cmath> #include<climits> using namespace std; //斐波那契结点ADT struct FibonacciHeapNode { int key; //结点 int degre…
 题目 单源最短路径dijstra矩阵 解决代码及点评 // 26单源最短路径dijstra矩阵.cpp : 定义控制台应用程序的入口点. // #include <iostream> #include<stack> #define M 100 #define N 100 using namespace std; typedef struct node { int matrix[N][M]; //邻接矩阵 int n; int e; }Graph; void Dijkstra…
 题目 单源最短路径 解决代码及点评 // 26单源最短路径bellmanford.cpp : 定义控制台应用程序的入口点. // #include <iostream> #include <deque> #include <algorithm> using namespace std; #define MAX_VERTEX_NUM 20 #define INFINITY 2147483647 struct adjVertexNode { int adjVerte…
 题目 二叉查找树 解决代码及点评 // 12二叉查找树.cpp : 定义控制台应用程序的入口点. // // 3 - 10二叉搜索树查找.cpp : 定义控制台应用程序的入口点. // #include <iostream> using namespace std; typedef struct BSTree { int nValue; struct BSTree *pLChild; struct BSTree *pRChild; }BSTree, *PBSTree; PBSTree…
 题目 二叉搜索树 解决代码及点评 #include <stdio.h> #include <malloc.h> #include <stdlib.h> typedef struct BSTree { int nValue; struct BSTree *pLChild; struct BSTree *pRChild; }BSTree, *PBSTree; PBSTree InsertBSTree(PBSTree pRoot, int nValue) { if (…
 题目 散列表 解决代码及点评 #include <iostream> #include <time.h> using namespace std; template <class T> class HashTable { private: T *pArr; int nSize; T EMPTY; //为空 T TOMB; //墓碑 int nCount; int hFun(T key) //散列函数 { return key % nSize; } int hDo…
 题目 hash表,用链表来解决冲突问题 解决代码及点评 /* 哈希表 链接法解决冲突问题 */ #include <iostream> using namespace std; struct Node { int nValue; Node *pNext; }; class HashTable { public: HashTable(int n); ~HashTable(); void Insert(int nValue); void InsertList(Node *pHead, in…
 题目 二叉树实现 解决代码及点评 #include<stdio.h> #include <malloc.h> #include <stdlib.h> typedef struct BiTNode { int nValue; struct BiTNode *pLChild; struct BiTNode *pRChild; }BiTNode, *PBiTree; //输入为0表示结点为空 PBiTree Create() { int nValue; PBiTree…
 题目 双向循环链表 解决代码及点评 #include <stdio.h> #include <stdlib.h> #include <time.h> #include <malloc.h> #include<assert.h> typedef struct Link { int nValue; struct Link *pPrev; struct Link *pNext; }Link, *PLink; PLink Create( ) {…
 题目 双向链表的实现 解决代码及点评 #include <stdio.h> #include <stdlib.h> #include <time.h> #include <malloc.h> #include<assert.h> typedef struct Link { int nValue; struct Link *pPrev; struct Link *pNext; }Link, *PLink; PLink Create( ) {…
 题目 单向循环链表的操作 解决代码及点评 #include <stdio.h> #include <stdlib.h> #include <time.h> #include <malloc.h> #include<assert.h> typedef struct LoopLink { int nValue; struct LoopLink *pNext; }LoopLink, *PLoopLink; PLoopLink Create()…
 题目 单链表操作 解决代码及点评 #include <iostream> using namespace std; struct LinkNode { public: LinkNode(int value = 0): nValue(value){ pNext = NULL; } ~LinkNode() { pNext = NULL; } private: friend class LinkList; int nValue; LinkNode *pNext; }; class LinkL…
 题目 用数组实现栈 解决代码及点评 #include <stdio.h> #include <stdlib.h> #include <time.h> #include <malloc.h> #include<assert.h> typedef struct Stack { int nTop; int nLen; int *pnArr; }Stack, *PStack; //初始化栈 nLen为栈的大小 PStack Create(int…
 题目 用链表实现栈 解决代码及点评 #include <stdio.h> #include <stdlib.h> #include <time.h> #include <malloc.h> #include<assert.h> typedef struct Stack { int nValue; struct Stack *pNext; }Stack, *PStack; PStack CreateStack() { PStack pSta…
 题目 查找第n小元素 解决代码及点评 #include <stdio.h> #include <stdlib.h> #include <malloc.h> #include <time.h> void PrintArr(int *pnArr, int nLen) { for (int i = 0; i < nLen; i++) { printf("%d ", pnArr[i]); } printf("\n"…
 题目 查找最大.最小值 解决代码及点评 #include <stdio.h> #include <stdlib.h> #include <malloc.h> #include <time.h> void PrintArr(int *pnArr, int nLen) { for (int i = 0; i < nLen; i++) { printf("%d ", pnArr[i]); } printf("\n&quo…
 题目 查找第二小元素 解决代码及点评 #include <stdio.h> #include <stdlib.h> #include <malloc.h> #include <time.h> void PrintArr(int *pnArr, int nLen) { for (int i = 0; i < nLen; i++) { printf("%d ", pnArr[i]); } printf("\n"…