摘要:1 #define _CRT_SECURE_NO_WARNINGS 2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 9 struct Node { 10 ...
阅读全文
摘要:递归 1 #define _CRT_SECURE_NO_WARNINGS 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 8 template 9 struct Node { 10 T data; 11 Node *left; 12 Node *right; 13 14 Node() : data(), left(NULL), right(NULL) {} // data()将使内置类型对象也初始化为0 15 }; 16 17 /* ...
阅读全文
摘要:用两个栈模拟队列,算法如下图所示:程序如下:Queue类的接口与实现 1 /******************************************************************** 2 created: 2013/08/18 3 created: 18:8:2013 21:54 4 file base: Queue 5 file ext: h 6 author: Justme0 (http://blog.csdn.net/Justme0) 7 8 purpos...
阅读全文
摘要:#define _CRT_SECURE_NO_WARNINGS#include <iostream>using namespace std;const int VERTEX_NUM = 7;const int INF = 0x7fffffff;struct V_UArc { int adjvex; int lowcost; // V中的顶点的lowcost为0以作标记}closedge[VERTEX_NUM + 1]; // 记录从顶点集U到V-U的代价最小的边的辅助数组定义int Minimum(V_UArc closedge[VERTEX_NUM + 1...
阅读全文
摘要:#define _CRT_SECURE_NO_WARNINGS#include <iostream>#include <queue>using namespace std;#define VERTEX_NUM 8bool visited[VERTEX_NUM + 1]; // 访问标志数组(备忘表)int FirstAdjVex(bool G[VERTEX_NUM + 1][VERTEX_NUM + 1], int v){ for (int j = 1; j <= VERTEX_NUM; j++) { if (G[v][j] == 1) ...
阅读全文
摘要:纯C:#include <stdio.h>#include <stdlib.h>#include <string.h>#define VERTEX_NUM 8typedef enum {FALSE = 0, TRUE = 1}BOOL;typedef struct ArcNode { int adjvex; struct ArcNode *nextarc; // struct不能少}ArcNode;BOOL visited[VERTEX_NUM + 1]; // 访问标志数组(备忘表)int FirstAdjVex(ArcNode *G[VERTEX_NUM
阅读全文
摘要:#define _CRT_SECURE_NO_WARNINGS#include <iostream>using namespace std;#define PATH#define VERTEX_NUM 8#ifdef PATHint count = 1;#endifbool visited[VERTEX_NUM + 1]; // 访问标志数组(备忘表)struct ArcNode { int adjvex; ArcNode *nextarc;};int FirstAdjVex(ArcNode *G[VERTEX_NUM + 1], int v){ if ...
阅读全文
摘要:#define _CRT_SECURE_NO_WARNINGS#include <iostream>using namespace std;//#define PATH#define VERTEX_NUM 8#ifdef PATHint count = 1;#endifbool visited[VERTEX_NUM + 1]; // 访问标志数组(备忘表)int FirstAdjVex(bool G[VERTEX_NUM + 1][VERTEX_NUM + 1], int v){ for (int j = 1; j <= VERTEX_NUM; j++) { ...
阅读全文
摘要:快速排序(递归):#define _CRT_SECURE_NO_WARNINGS#include <iostream>using namespace std;#define LEN 8 // 有LEN个元素要排#define TESTstruct Record { // 为了考察排序的稳定性,定义元素是结构体类型 int key; int otherinfo;};int Partition(Record *arr, int low, int high){ // 交换顺序表L中子序列arr[low..high]的记录,使枢轴记录到位, // 并返回...
阅读全文
摘要:表插入时间复杂度O(n^2)附加空间O(1)稳定排序#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
using namespace std; #define LEN 8 // 有LEN个元素要排 struct Record { // 为了考察排序的稳定性,定义元素是结构体类型 int key; int otherinfo; int next;
}; void LinkListInsertSort(Record *arr, int length) // length是要排序的元素的个数,0号单元除外
{ for (int i .
阅读全文
摘要:折半插入排序时间复杂度O(n^2)附加空间O(1)稳定排序#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
using namespace std; #define LEN 8 // 有LEN个元素要排 struct Record { // 为了考察排序的稳定性,定义元素是结构体类型 int key; int otherinfo;
}; void BInsertSort(Record *arr, int length) // length是要排序的元素的个数,0号单元除外
{ for (int i = 2; i <= le
阅读全文
摘要:在常用算法总排序是最常用的算法之一!而快排在c 的 stdlib库中是有现成的封装对于我们写算法是提供了方便之处的!一 、对int类型数组排序int cmp ( const void *a , const void *b ) { return *(int *)a - *(int *)b; }qsort(arry, N, sizeof(arry[0]), cmp);qsort(指向一个要排序数组的首地址, 指要排序数组的元素个数, 指每个元素的大小, cmp); 这个是一个从大到小的排序如果要从小到大排序可以讲cmp函数改为如下: int cmp(constvoid *a,constvoid..
阅读全文
摘要:直接插入排序时间复杂度O(n^2)附加空间O(1)稳定排序#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
using namespace std; #define LEN 8 // 有LEN个元素要排 struct Record { // 为了考察排序的稳定性,定义元素是结构体类型 int key; int otherinfo;
}; void InsertSort(Record *arr, int length) // length是要排序的元素的个数,0号单元除外
{ for (int i = 2; i <= len
阅读全文
摘要:转自王笨笨第三章 奇妙的二叉树:Huffman的贡献提起 Huffman 这个名字,程序员们至少会联想到二叉树和二进制编码。的确,我们总以 Huffman 编码来概括 D.A.Huffman 个人对计算机领域特别是数据压缩领域的杰出贡献。我们知道,压缩 = 模型 + 编码,作为一种压缩方法,我们必须全面考虑其模型和编码两个模块的功效;但同时,模型和编码两个模块又相互具有独立性。举例来说,一个使用 Huffman 编码方法的程序,完全可以采用不同的模型来统计字符在信息中出现的概率。因此,我们这一章将首先围绕 Huffman 先生最为重要的贡献 —— Huffman 编码展开讨论,随后,我们再具体
阅读全文
摘要:1、介绍先上张图来说明用回溯法解八皇后问题的每一步: 2、程序对着严蔚敏的书写的,写好后运行竟然一次性成功了,没有任何bug,我鸡冻了。上代码:// N皇后问题 #include <iostream>
using namespace std; #define N 8 bool matrix[N + 1][N + 1] = {0}; bool IsLegal(bool matrix[N + 1][N + 1], const int &i, const int &j)
{ // 判断前面的i-1个棋子与matrix[i][j]是否冲突,i为1时合法 for (int m
阅读全文
摘要:1、贴代码:#include <iostream>
#include <cstdio>
using namespace std; struct Node { double coef; int expn; Node *next;
}; void CreatPolynomial(Node *&head, int n) // 生成带表头结点的单链表,除头结点外另生成n个结点
{ head = (Node *)malloc(sizeof(Node)); head->coef = 0; head->expn = 0; head->next = NULL;
阅读全文
摘要:http://acm.nyist.net/JudgeOnline/problem.php?pid=21、我的代码: #include <iostream>
#include <cstring>
using namespace std; #define MAXSIZE 10005
int main(void)
{ int k; cin >> k; while(k--) { char str[MAXSIZE]; cin >> str; char stack[MAXSIZE]; int len = strlen(str); int j = 0; boo
阅读全文
摘要:这些函数中都有“重复”的,因为操作数(OPND)栈用double,操作符(OPTR)栈用char。C++中的模板可以解决这个问题吗?这是对着书写的:#include <iostream>
using namespace std; #define STACK_INIT_SIZE 100
#define STACKINCREMENT 100 char Precede_Matrix[7][7] = { {'>', '>', '<', '<', '<', '>'
阅读全文
摘要:#include <cstdio>
#include <iostream>
using namespace std; #define MAXSIZE 20 typedef struct { char *base; char *top; int stacksize;
}SqStack; void InitStack(SqStack &S)
{ S.base = (char *)malloc( MAXSIZE * sizeof(char) ); if(S.base == NULL) exit(-2); S.top = S.base; S.stacksize = MA
阅读全文
摘要:觉得用静态循环链表最划算了。1、动态链表要动态分配,指针移来移去,释放指针等等,弄得很烦,容易出错。2、用循环链表是当然的了。// DS: 似循环静态链表 #include <iostream>
#include <cstdio>
//#include <cstdlib>
using namespace std; int Kill_You( const int sum = 1, const int distance = 1, const int start = 1)
{ // 一共参加自杀的人数有 sum 个,每 distence 个人就杀一个,从第 sta
阅读全文