随笔分类 - 数据结构与算法
摘要:1。目录map简介map的功能map的定义在map中添加元素查找并获取map中的元素从map中删除元素map对象的迭代遍历2。map简介map是一类关联式容器,它是模板类。关联的本质在于元素的值与某个特定的键相关联,而并非通过元素在数组中的位置类获取。它的特点是增加和删除节点对迭代器的影响很小,除了...
阅读全文
摘要:#include using namespace std;typedef struct BiTNode{ int data; struct BiTNode *lchild, *rchild;}BiTNode,*BiTree;class solution{public: bool searchBst(...
阅读全文
摘要:原文:http://blog.csdn.net/tianshuai1111/article/details/7674327一,巡防算法 for_each(容器起始地址,容器结束地址,要执行的方法)[html]view plaincopy#include#include#includeusing...
阅读全文
摘要:主要是栈的应用,里面有两个函数deleteSpace(),stringToDouble()在我另一篇博客当中:对string的一些扩展函数。 本程序只是基本的功能实现,没有差错控制。#include#include#include#include#include"fstring.h"/* ...
阅读全文
摘要:排序算法复习大致结束了,主要有以下几种:冒泡排序、选择排序、简单插入排序、希尔排序、归并排序、快速排序、堆排序。#include #define MAXSIZE 1000using namespace std;class SqList{public: SqList():length(0){} Sq...
阅读全文
摘要:堆的定义:1)完全二叉树,2)每个结点的值都大于其左右孩子结点的值。根据堆的定义可知,最大值就是根结点,其次就是根结点左右孩子结点中的一个…… 堆排序有两个很重要的过程:1)建堆,2)堆维护。实质上,这两个过程都可以通过一个函数来实现。void HeapAdjust(SqList* l...
阅读全文
摘要:快速排序将以枢轴为界,将原数组分为两个部分,枢轴以前,值都小于枢轴的值,枢轴以后的值都大于枢轴。 采用递归的方法,对以枢轴为界的两个子序列进行快速排序,直至子序列长度为1。 1、快速排序的关键是枢轴的选取,主要有三种方法:1)选取第一个或最后一个作为枢轴值;2)采用随机数生成器,生成枢...
阅读全文
摘要:归并排序原理即将两个有序的数组合并成一个,归并排序有两种方法:递归和循环。/*递归方法*/void Merge(int TR1[], int TR2[], int low, int mid, int high){//将TR2归并入TR1中 int pos1 = low; int pos2 = mid...
阅读全文
摘要:1、几乎所有关于二叉树的问题都可以用递归解决,二叉树和递归可谓相依相生;2、对于二叉树问题,递归的代码量往往比循环要简单很多,但简单不一定意味着好,递归的深度如果太大,容易引起栈溢出;3、遍历二叉树时,可以考虑使用栈存储二叉树;4、只要知道二叉树的前序和中序或后序和中序就可以还原二叉树,但前序和后序...
阅读全文
摘要:三种方法中,递归最为简单,栈次之,循环最为麻烦。递归的深度如果太大则会导致栈溢出;栈的方式需要额外的辅助空间;循环编程最麻烦。 首先是递归://递归方法void midPrint_r(TreeNode* root){//中序遍历 if(root==NULL) return; if...
阅读全文
摘要:
阅读全文
摘要:/*如果采用单向链表,end()函数如何表示? *所以必须得采用循环链表的方式? * */#ifndef LIST#define LIST#includeusing namespace std;//声明template struct Node{ T data; struct Node* next; ...
阅读全文
摘要:仅仅实现了基本的链表操作,如创建、查找、删除、排序等。//头文件/*there is no head node exist * */#include using namespace std;typedef struct Node{ int value; struct Node* next;}...
阅读全文

浙公网安备 33010602011771号