随笔分类 -  Data Structure

求二叉树高度
摘要:因为树是递归定义的,所以用递归算法很方便。#define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <cstdio> using namespace std; struct Node { char data; Node *lchild; Node *rchild; }; void High(Node *T, int &h) { if (T == NULL) h = 0; else { int left_h; High(T->lchild, left_h); int right_h; High( 阅读全文

posted @ 2012-06-27 00:29 c语言源码 阅读(1182) 评论(0) 推荐(0)

插入排序之表插入
摘要:表插入时间复杂度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 . 阅读全文

posted @ 2012-05-20 00:09 c语言源码 阅读(177) 评论(0) 推荐(0)

插入排序之折半插入排序
摘要:折半插入排序时间复杂度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 阅读全文

posted @ 2012-05-19 21:09 c语言源码 阅读(327) 评论(0) 推荐(0)

qsort函数的cmp
摘要:在常用算法总排序是最常用的算法之一!而快排在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.. 阅读全文

posted @ 2012-05-19 19:31 c语言源码 阅读(1076) 评论(0) 推荐(0)

插入排序之直接插入排序
摘要:直接插入排序时间复杂度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 阅读全文

posted @ 2012-05-19 16:47 c语言源码 阅读(283) 评论(0) 推荐(0)

对Huffman编码的思考,熵
摘要:转自王笨笨第三章 奇妙的二叉树:Huffman的贡献提起 Huffman 这个名字,程序员们至少会联想到二叉树和二进制编码。的确,我们总以 Huffman 编码来概括 D.A.Huffman 个人对计算机领域特别是数据压缩领域的杰出贡献。我们知道,压缩 = 模型 + 编码,作为一种压缩方法,我们必须全面考虑其模型和编码两个模块的功效;但同时,模型和编码两个模块又相互具有独立性。举例来说,一个使用 Huffman 编码方法的程序,完全可以采用不同的模型来统计字符在信息中出现的概率。因此,我们这一章将首先围绕 Huffman 先生最为重要的贡献 —— Huffman 编码展开讨论,随后,我们再具体 阅读全文

posted @ 2012-05-07 22:42 c语言源码 阅读(379) 评论(0) 推荐(0)

久仰的八皇后问题
摘要: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 阅读全文

posted @ 2012-05-06 22:03 c语言源码 阅读(353) 评论(0) 推荐(1)

Polynomial 一元多项式的表示及相加 (线性链表实现 严蔚敏版)
摘要: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; 阅读全文

posted @ 2012-04-15 22:58 c语言源码 阅读(506) 评论(0) 推荐(0)

NYOJ 2题 括号配对问题
摘要: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 阅读全文

posted @ 2012-04-04 00:52 c语言源码 阅读(170) 评论(0) 推荐(0)

NYOJ 35题 表达式求值,四则运算(栈实现) 严蔚敏
摘要:这些函数中都有“重复”的,因为操作数(OPND)栈用double,操作符(OPTR)栈用char。C++中的模板可以解决这个问题吗?这是对着书写的:#include <iostream> using namespace std; #define STACK_INIT_SIZE 100 #define STACKINCREMENT 100 char Precede_Matrix[7][7] = { {'>', '>', '<', '<', '<', '>' 阅读全文

posted @ 2012-03-31 22:13 c语言源码 阅读(440) 评论(0) 推荐(0)

括号匹配(栈实现)
摘要:#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 阅读全文

posted @ 2012-03-31 13:17 c语言源码 阅读(402) 评论(0) 推荐(0)

约瑟夫环,杀人游戏(静态循环链表实现)
摘要:觉得用静态循环链表最划算了。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 阅读全文

posted @ 2012-03-24 15:51 c语言源码 阅读(1895) 评论(0) 推荐(0)

导航