Data Structure
文章平均质量分 91
静革 justme0.com
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
插入排序之表插入
表插入 时间复杂度O(n^2) 附加空间O(1) 稳定排序 #define _CRT_SECURE_NO_WARNINGS #include using namespace std; #define LEN 8 // 有LEN个元素要排 struct Record { // 为了考察排序的稳定性,定义元素是结构体类型 int key; int otherinfo; int原创 2012-05-20 00:09:44 · 1522 阅读 · 0 评论 -
C 语言中模拟“泛型”
一般在写 C 程序时用 typedef 将容器中元素的类型抽象,无法在同一个程序中用到两种类型,而本文试图在一个程序中用到两种不同类型的容器,比如实现类似于 C++ 中的 vector 和 vector。核心技术是将元素类型定义为 void *,管它什么类型,都用 void * 类型的指针指向真正的数据,与此同时,类型的大小是个重要信息,比如一般地,char 为1个字节,double 为4个字节。原创 2014-02-07 22:44:15 · 3897 阅读 · 0 评论 -
求二叉树的带权路径长度(深搜或广搜)
考研昨天结束了,专业课我考得不好,是408,算法题13分。今年是求二叉树的带权路径长度,我就写了算法思想,代码空白,因为时间来不及了,慌了,是心态的问题吧,做到最后有种天要塌下来的感觉,回来后很沮丧,因为我觉得自己是可以写出程序的,不服啊! 下面说说这道题目。树的带权路径长度(Weighted Path Length)定义:树中所有叶子的带权路径长度之和。比如下面这棵树,WPL就是3*原创 2014-01-06 17:28:56 · 8069 阅读 · 3 评论 -
求二叉树高度(更新:用C++14编写)
因为树是递归定义的,所以用递归算法很方便。 #define _CRT_SECURE_NO_WARNINGS #include #include using namespace std; struct Node { char data; Node *lchild; Node *rchild; }; void High(Node *T, int &h) { if (T == NULL原创 2012-06-27 00:29:22 · 15468 阅读 · 8 评论 -
用二级指针操作不带头结点的单链表
在不带头结点的单链表中删除特定元素,一种很麻烦的情况是首结点即要删的结点,所以往往标识一个链表的 head 就会改变,而在删除函数中要改变客户端的 head,就必须传入 head 的地址,否则客户端的 head 永远不会改变,也就是说,若形参为 Node * 类型,修改的只是 head 的副本,这是C语言中的基础问题。这篇博客是我读了皓哥的这篇文章《Linus:利用二级指针删除单向链表》有感而写的原创 2013-10-06 00:56:32 · 3407 阅读 · 8 评论 -
八皇后问题
1、介绍 先上张图来说明用回溯法解八皇后问题的每一步: 2、程序 对着严蔚敏的书写的,写好后运行竟然一次性成功了,没有任何bug,我鸡冻了。 上代码: // N皇后问题 #include using namespace std; #define N 8 bool matrix[N + 1][N + 1] = {0}; bool原创 2012-05-06 22:03:20 · 38136 阅读 · 15 评论 -
用 C++ 标准模板库(STL)的 vector 实现二叉搜索树(BST)
本文由 Justme0 翻译自 Code Project 转载请参见文章末尾处的要求。 介绍 众所周知,要建一棵树,我们需要关注它的内存分配与释放。为了避开这个问题,我打算用C++ STL(vector和deque)来建一棵小型的BST。很明显,这篇文章是出于这个想法的。 背景 BST是应用最广泛的数据结构之一。C是首选语言,不过因为C++尤其是C++11的出现,我更有兴翻译 2013-09-05 17:31:07 · 7499 阅读 · 2 评论 -
完美二叉树(perfect)与正则二叉树(strict)的概念
“满二叉树(full)”的定义在国内和国外完全不同,国内指“完美二叉树(perfect)”,国外指“正则二叉树(strict)”,所以我建议国内外都取消“满二叉树(full)”这个叫法,这样就没有不必要的麻烦了。 总结如下: 参考资料: http://www.stackpop.org/html/366_cn_us_difference_ds.html http://st原创 2013-02-25 10:36:28 · 7718 阅读 · 0 评论 -
NYOJ 2 括号配对问题(栈)
http://acm.nyist.net/JudgeOnline/problem.php?pid=2 1、我的代码: #include #include using namespace std; #define MAXSIZE 10005 int main(void) { int k; cin >> k; while(k--) { char str[MAXSIZE]原创 2012-04-04 00:52:01 · 3322 阅读 · 0 评论 -
NYOJ 35 表达式求值(栈)
这些函数中都有“重复”的,因为操作数(OPND)栈用double,操作符(OPTR)栈用char。C++中的模板可以解决这个问题吗? 这是对着书写的: #include using namespace std; #define STACK_INIT_SIZE 100 #define STACKINCREMENT 100 char Precede_Matrix[7][7] = { {原创 2012-03-31 22:13:19 · 2788 阅读 · 0 评论 -
插入排序之折半插入排序
折半插入排序 时间复杂度O(n^2) 附加空间O(1) 稳定排序 #define _CRT_SECURE_NO_WARNINGS #include using namespace std; #define LEN 8 // 有LEN个元素要排 struct Record { // 为了考察排序的稳定性,定义元素是结构体类型 int key; int otherinfo; };原创 2012-05-19 21:09:52 · 5397 阅读 · 0 评论 -
插入排序之直接插入排序
直接插入排序 时间复杂度O(n^2) 附加空间O(1) 稳定排序 #define _CRT_SECURE_NO_WARNINGS #include using namespace std; #define LEN 8 // 有LEN个元素要排 struct Record { // 为了考察排序的稳定性,定义元素是结构体类型 int key; int otherinfo; };原创 2012-05-19 16:47:08 · 1328 阅读 · 1 评论 -
Polynomial 一元多项式的表示及相加 (线性链表实现 严蔚敏版)
1、贴代码: #include #include using namespace std; struct Node { double coef; int expn; Node *next; }; void CreatPolynomial(Node *&head, int n) // 生成带表头结点的单链表,除头结点外另生成n个结点 { head = (Node *)malloc原创 2012-04-15 22:58:50 · 9948 阅读 · 3 评论 -
括号匹配(栈实现)
#include #include using namespace std; #define MAXSIZE 20 typedef struct { char *base; char *top; int stacksize; }SqStack; void InitStack(SqStack &S) { S.base = (char *)malloc( MAXSIZE * size原创 2012-03-31 13:17:46 · 1882 阅读 · 0 评论 -
约瑟夫环,杀人游戏(静态循环链表实现)
觉得用静态循环链表最划算了。 1、动态链表要动态分配,指针移来移去,释放指针等等,弄得很烦,容易出错。 2、用循环链表是当然的了。 // DS: 似循环静态链表 #include #include //#include using namespace std; int Kill_You( const int sum = 1, const int distance = 1, c原创 2012-03-24 15:51:46 · 3430 阅读 · 1 评论
分享