
数据结构
lizhi389
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
图的邻接矩阵实现
先写这么多,明天给例子和邻接表实现 #include #include #include using namespace std;const int MaxSize = 12;template class Graph{private: list vertexList; int edge[MaxSize][MaxSize]; int numofVertex, numofA原创 2012-11-26 20:19:52 · 557 阅读 · 0 评论 -
基础数据结构之图二
参考了书上的算法描述,写下来的prim,kruskal,AOV网络拓扑排序等的图相关的基础算法。做了一些注释1.拓扑排序的如下:#define MAX_VERTICESstruct node{ int vertex; struct node *link;};typedef struct{ struct node *link; int count;//入度}hnode;//链原创 2013-03-01 23:10:14 · 392 阅读 · 0 评论 -
基础数据结构之图
用c实现了图的部分操作(存储方式为邻接表,邻接矩阵请移步之前文章 :图的邻接矩阵实现c语言版)。参考文献:Fundamentals of Data Structures in C请看代码和注释:#include #include #include #define MAX_VERTICES 10 //最大顶点数量#define TRUE 1#define FALSE 0#de原创 2013-02-27 23:11:43 · 386 阅读 · 0 评论 -
树的遍历 非递归
之前写过一个层序遍历的笔记,今天写了下前中后序遍历#include #include #define SIZE 20typedef struct Node *n_pointer;typedef struct Node{ n_pointer left; n_pointer right; int key;};int top = -1;//init stack原创 2013-03-09 12:17:09 · 490 阅读 · 0 评论 -
BST(或者普通树)的中序遍历非递归版本
写了一下中序的迭代版本。用了昨天的BST测试了一下。对栈的使用得深刻理解。void inorder(BSTnode* root){ BSTnode* p = root; sq.push_back(p); p = p->m_left; while(!sq.empty()) { while(p) { sq.push_back(p); p = p->m_left;原创 2012-11-19 23:06:57 · 1870 阅读 · 0 评论 -
树的先序遍历迭代版本(修改版)
针对之前写的那个前序遍历,修改了一下。思路和按层遍历是一样的(看别人的文章获悉这两个遍历思路一样,写完代码才发现,的确一样)因为顺序是根---->右孩子---->左孩子,所以,先输出(或者是其他的处理)根,然后将右孩子和左孩子分别入栈,每次出栈的节点只有一个,所以出栈之后的节点再将它的右孩子左孩子分别入栈。。。(就是递归版本的运行时栈情况)#include #include usin原创 2012-11-24 20:47:02 · 738 阅读 · 0 评论 -
树(此处以二叉搜索树为例)的按层遍历 更改版本
#include #include using namespace std;struct BSTNode{ int value; BSTNode* left; BSTNode* right; BSTNode() { value = 0; left = NULL; right = NULL; }};deque sq;void insert原创 2012-11-23 22:35:05 · 634 阅读 · 0 评论 -
二叉树二度节点和叶子节点的数量关系
二叉树二度节点和叶子节点的数量关系:假设共有节点 N 个, 二度几点 x 个,一度节点y个, 则叶子节点个数(设为z)?N个节点,那么共有树枝N - 1个1个二度节点有2个树枝,叶子没有,一度节点有1个,那么推导出一共有 2x + y 个2x + y = N - 1;x + y + z = N; 由以上两式得出,z = x + 1;完毕。原创 2012-11-22 22:35:40 · 26834 阅读 · 0 评论 -
二叉树节点推导既二度节点和叶子节点的数量关系
二叉树二度节点和叶子节点的数量关系:假设共有节点 N 个, 二度几点 x 个,一度节点y个, 则叶子节点个数(设为z)?N个节点,那么共有树枝N - 1个1个二度节点有2个树枝,叶子没有,一度节点有1个,那么推导出一共有 2x + y 个2x + y = N - 1;x + y + z = N; 由以上两式得出,z = x + 1;完毕。原创 2012-11-22 22:34:51 · 2120 阅读 · 0 评论 -
BST(或者普通树)的前序遍历迭代版本
这个版本是自己写的,有个明显bug,漏掉了一种情况。void preorder(BSTnode* root){ BSTnode* p = root; st.push(p); while(!st.empty()) { while(p) { cout m_value << endl; if(p->m_right) st.push(p->m_right);原创 2012-11-21 23:15:41 · 585 阅读 · 0 评论 -
BST(二叉搜索树)按层遍历
这个是很快的一个充满bug的版本,很快会更新。按层遍历。举个例子: 这个BST的话,输出应为1,2,3,4,5,6,7利用了STL的deque,代码如下:#include #include using namespace std;struct BSTNode{ int value; BSTNode* left; BSTNode* right; BST原创 2012-11-18 20:32:17 · 796 阅读 · 0 评论 -
对优先队列的一些想法--笔记贴
先明确,优先队列的基本需求:访问最小元素。插入和删除的速度也要足够。可以作为选择的数据结构:1.链表。链表可以保证常量时间在表头插入,但是删除需要遍历链表。如果保持链表是排序的,即在插入的时候做些手脚,那么会使得插入操作时遍历链表,时间又上升到了O(N)。暂时弃之。2.二叉搜索树。可以使得时间复杂度为O(logN),但是不够随机的情况之下,会使得时间复杂度变为O(logN),这时候的树原创 2012-11-29 13:29:18 · 453 阅读 · 0 评论 -
图的邻接矩阵实现----修正版
上次的那个邻接矩阵的实现点击打开链接没有给出print()函数等,这次都加上了,测试了,可以了。草草结束,写完邻接表和多重表之后再整合一下。:)#include #include #include using namespace std;const int MaxSize = 12;template class Graph{private: list vertexList;原创 2012-11-27 21:46:44 · 536 阅读 · 0 评论 -
给出后序遍历(先序遍历结果)和中序遍历结果求先序遍历结果(后序遍历结果)
#include using namespace std; void pos(char* inorder, char* preorder, int length) { if(length == 0) return; char c = *preorder; int rootIndex = 0; for(;rootIndex < length; ro原创 2013-04-10 17:59:28 · 987 阅读 · 0 评论