
数据结构
文章平均质量分 51
nullcanon
健忘症患者的云端笔记
展开
-
单链表的基本操作
包括链表的初始化,销毁链表,头插,头删,尾插,尾删,指定位置插入,指定位置删除,链表长度#include<stdio.h>#include<stdlib.h>#include<assert.h>#define DateType inttypedef struct Node{ DateType data; struct Node* next;}Node,*pNode;void原创 2017-09-24 15:28:08 · 607 阅读 · 0 评论 -
栈的基本操作
包括构造空栈,销毁栈,把栈置空,检验栈是否为空,求栈的长度,取出栈顶元素,入栈,出栈原创 2017-09-05 17:08:11 · 410 阅读 · 0 评论 -
单链表的常见面试题1
单链表的常见面试题:从尾到头打印单链表删除一个无头单链表的非尾节点(不能遍历链表)在无头单链表的一个非头节点前插入一个节点(不能遍历链表)单链表实现约瑟夫环(JosephCircle)逆置/反转单链表查找单链表的中间节点,要求只能遍历一次链表 单链表的基础操作void PrintListTail2Head(pNode head)//倒着打印{ if(head) {原创 2017-09-26 15:52:44 · 316 阅读 · 0 评论 -
循环队列和以单链表的形式实现队列
循环队列template<class T,size_t N = 8>class queue{public: queue() :_rear(0) , _front(0) , _count(0) {} void push(const T data) { if (_count == N)原创 2017-12-24 14:56:58 · 597 阅读 · 0 评论 -
二叉树的线索化和遍历
包括二叉树的前序,中序,后序线索化和线索化遍历#pragma once#includeusing namespace std;enum pInfo{ LINK, THREAD };templateclass T>struct BinTreeThreadNode{ BinTreeThreadNode(const T data) :_pLeft(NULL)原创 2018-01-13 13:49:00 · 307 阅读 · 0 评论 -
完成一个二叉树类
包括二叉树的前序遍历,中序遍历,后序遍历(递归/非递归)和层序遍历 包括 树的高度,树的节点个数,叶子节点个数,第k层结点的个数,判断一个节点是否在二叉树内,查找值为k的节点,二叉树的镜像,判断是否为完全二叉树#ifndef _BINTREE__H_#define _BINTREE__H_#include#include#include#includeusing name原创 2018-01-05 15:19:58 · 191 阅读 · 0 评论 -
二叉搜索树
二叉搜索树 当它不为空时,满足如下性质: 当它的左子树不为空时,左子树所有节点都小于根结点的值 当它的右子树不为空时,右子树所有节点都大于根结点的值 它的左右子树分别为二叉搜索树搜索节点如果根结点不为空 如果key和节点的值相等,返回如果key小于节点的值,去左子树查找如果key大于节点的值,去右子树查找插入节点如果根结点为空 直接插入搜索要插入的位置: ...原创 2018-03-09 14:48:00 · 209 阅读 · 0 评论 -
AVL树详解
AVL树AVL树是一个高度平衡的二叉搜索树,我们知道,二叉搜索树在最理想的情况下的时间复杂度为O(logN),但在极度差的情况下(比如左右单只),二叉搜索树会退化成一个单链表,时间复杂度退化为O(n),为了保证二叉搜索树的效率控制在O(logN),对二叉树做一些改变,是的它变为极度平衡的VAL树。AVL树的定义 一棵AVL树或者是空树,或者是左右子树都是AVL树,其中左右子树的高度之差(...原创 2018-03-24 20:18:45 · 547 阅读 · 0 评论 -
红黑树详解
红黑树红黑树是一棵二叉搜索树,它在每一个节点上增加了一个表示颜色的指针,红色或者黑色。 一棵红黑树是满足下面性质的二叉搜索树: 每个节点非红即黑 根结点是黑色的 每个叶节点(这里的叶节点是指NULL节点)是黑色的 如果一个节点是红的,那么两个子节点都是黑的 对于任一节点,从该节点到所有后代叶节点的路径上,黑色节点的数目相等 由于这些性质的约定,红黑树没...原创 2018-04-01 17:22:20 · 1003 阅读 · 0 评论