数据结构
文章平均质量分 70
yangshuangtao
这个作者很懒,什么都没留下…
展开
-
用C语言实现单链表的各种操作
#include#includestruct LinkList{ int data; struct LinkList *next;};/*初始化链表*/void init_list(LinkList **head) { *head=(LinkList *)malloc(sizeof(LinkList)); (*head)->next=N原创 2015-04-10 20:21:19 · 909 阅读 · 0 评论 -
图的深度优先遍历和广度优先遍历
图的深度优先遍历和广度优先遍历图的深度优先遍历和广度优先遍历 图的深度优先遍历和广度优先遍历 图的深度优先遍历:V1 V2 V4 V8 V5 V3 V6 V7图的广度优先遍历:V1 V2 V3 V4 V5 V6 V7 V8#include#include#includeusing namespace std;struct _ArcInfo{转载 2015-12-09 16:41:05 · 1138 阅读 · 0 评论 -
二叉树深度优先遍历和广度优先遍历
深度优先遍历,将一颗二叉树优先往更深层次遍历,先遍历根,然后分别是左子树和右子树,借助栈的数据结构来实现。先将右子树压栈,在将左子树压栈。void depthFirstSearch(Tree root){ stackNode *> nodeStack; //使用C++的STL标准模板库 nodeStack.push(root); Node *node;原创 2015-09-16 23:08:54 · 782 阅读 · 0 评论 -
B树、B+树的区别
一、B树1、B树的定义 B树是一种平衡的多分树,通常我们说m阶的B树,它必须满足如下条件: (1)每个结点至多有m个子结点; (2)除根结点和叶结点外,其它每个结点至少有 个子结点; (3)若根结点不是叶子结点,则至少有两个子结点; (4)所有的叶结点在同一层; (5)有k个子结点的非根结点恰好包含k-1个关键码。2、B树转载 2015-09-27 14:51:38 · 4658 阅读 · 1 评论 -
利用哈希表实现数据查找
题目:现在有一个用来存放整数的Hash表,Hash表的存储单位称为桶,每个桶能放3个整数,当一个桶中要放的元素超过3个时,则要将新的元素存放在溢出桶中,每个溢出桶也能放3个元素,多个溢出桶使用链表串起来。此Hash表的基桶数目为素数P,Hash表的hash函数对P取模。#includeusing namespace std;#define P 7#define NULL_DATA -1原创 2015-08-13 12:35:22 · 2530 阅读 · 0 评论 -
线段树
线段树在一些acm题目中经常见到,这种数据结构主要应用在计算几何和地理信息系统中。下图就为一个线段树:(PS:可能你见过线段树的不同表示方式,但是都大同小异,根据自己的需要来建就行。)1.线段树基本性质和操作线段树是一棵二叉树,记为T(a, b),参数a,b表示区间[a,b],其中b-a称为区间的长度,记为L。线段树T(a,b)也可递归定义为:若L>1 : [a, (a+转载 2015-06-10 19:30:48 · 376 阅读 · 0 评论 -
用递归和非递归方式实现二叉树
用递归和非递归方式实现二叉树的各种操作#include #include #include using namespace std;//二叉树结点的描述 typedef struct BiTNode{ char data; struct BiTNode *lchild, *rchild; //左右孩子 }BiTNode, *BiTree;转载 2015-06-10 13:33:22 · 476 阅读 · 0 评论 -
用栈实现单链表的逆转
#include#includeusing namespace std;struct ListNode{ ListNode *next; int data; ListNode(int x): { data=x; next=NULL: }}; ListNode* ReverseList(ListNode* pHead) {原创 2015-06-25 12:26:40 · 4600 阅读 · 1 评论 -
经典面试题(四)附答案 算法+数据结构+代码 微软Microsoft、谷歌Google、百度、腾讯
1金币概率问题(威盛笔试题)题目:个房间里放着随机数量的金币。每个房间只能进入一次,并只能在一个房间中拿金币。一个人采取如下策略:前四个房间只看不拿。随后的房间只要看到比前四个房间都多的金币数,就拿。否则就拿最后一个房间的金币。编程计算这种策略拿到最多金币的概率。 这题真要用数学的方法计算,估计还真不好算。还好,题目要求用编程实现。这样它就成了一个模拟题,即用程序来模拟整个取转载 2015-04-22 19:33:16 · 471 阅读 · 0 评论 -
用二叉树区分DFS和BFS
二叉树概念和性质二叉树是每个节点最多有两个子树的树结构,常被用于实现二叉查找树和二叉堆。在图论中,二叉树定义是一个连通的无环图,并且每一个顶点的度不大于2。二叉树和树有很多相似之处,但并不是树的特殊情形,主要有以下三点主要差别:1.树中结点的最大度数没有限制,而二叉树结点的最大度数为2;2.树的结点无左、右之分,而二叉树的结点有左、右之分;3.树的结点个数至少为1,而二叉树的结点个转载 2015-04-11 12:38:21 · 504 阅读 · 0 评论 -
堆排序中求前K个最小数
01.#include "iostream" 02.#include "vector" 03.#include "algorithm" 04.using namespace std; 05.void HeapAdjust(std::vector &a,int i,int size){ 06. int lchild = 2*i + 1; 07. int rchil转载 2015-04-03 20:55:02 · 678 阅读 · 0 评论 -
顺序表的实现(C语言)
#include#include#define MAXSIZE 100struct List{ int element[MAXSIZE]; //链表中最大节点数 int len; //当前链表的长度}*t;void print(List *t);int Isemtty(List *t) //判断链表是否为空{ if(t->len==原创 2015-04-09 08:29:36 · 5645 阅读 · 1 评论 -
表达式的前中后缀表示和表达式运算
一、将自然表达式转换为前/中/后缀表达式,首先按照自然表达式中操作数和操作符的优先级顺序构造出表达式对应的二叉树,然后对二叉树进行前序/中序/后序遍历,即得到前/中/后缀表 达式 二、一些其他的遍历原则: 1、深度优先遍历: 首先访问出发点V,并将其标记为已访问过;然后依次从V出发搜索V的每个邻接点W。若W未曾访问过,则以W为新的出发点继续进行深度优先遍历,直原创 2015-12-02 11:20:52 · 699 阅读 · 0 评论