数据结构与算法
文章平均质量分 63
朱传林
每个不曾起舞的日子,都是对生命的辜负!
展开
-
【C++ STL】算法 <algorithm>中各种算法解析
原文:http://blog.csdn.net/tianshuai1111/article/details/7674327一,巡防算法 for_each(容器起始地址,容器结束地址,要执行的方法)[html] view plaincopy#include iostream> #inc转载 2015-07-07 21:37:12 · 1039 阅读 · 0 评论 -
一个简单的链表结构
仅仅实现了基本的链表操作,如创建、查找、删除、排序等。//头文件/*there is no head node exist * */#include using namespace std;typedef struct Node{ int value; struct Node* next;}Node,*ListNode;bool isEmpty(ListNode )原创 2015-06-14 16:39:34 · 736 阅读 · 1 评论 -
排序算法之归并排序
归并排序原理即将两个有序的数组合并成一个,归并排序有两种方法:递归和循环。/*递归方法*/void Merge(int TR1[], int TR2[], int low, int mid, int high){//将TR2归并入TR1中 int pos1 = low; int pos2 = mid + 1; for (int i = low; i <= high; ++i)原创 2015-06-29 16:46:08 · 844 阅读 · 0 评论 -
C++学习之map类型
1。目录map简介map的功能map的定义在map中添加元素查找并获取map中的元素从map中删除元素map对象的迭代遍历 2。map简介map是一类关联式容器,它是模板类。关联的本质在于元素的值与某个特定的键相关联,而并非通过元素在数组中的位置类获取。它的特点是增加和删除节点对迭代器的影响很小,除了操作节点,对其他的节点都没有什么影响。对于迭代器来说,不可以修改键转载 2015-07-17 15:07:33 · 484 阅读 · 0 评论 -
逆波兰法求解数学表达示(C++)
主要是栈的应用,里面有两个函数deleteSpace(),stringToDouble()在我另一篇博客当中:对string的一些扩展函数。 本程序只是基本的功能实现,没有差错控制。#include#include#include#include#include"fstring.h"/* *采用逆波兰表示法求解数学表达示 *1、将输入的中缀表示示转换成后原创 2015-07-01 14:41:48 · 968 阅读 · 1 评论 -
二叉树的三种遍历方式:递归、栈、循环
三种方法中,递归最为简单,栈次之,循环最为麻烦。递归的深度如果太大则会导致栈溢出;栈的方式需要额外的辅助空间;循环编程最麻烦。 首先是递归://递归方法void midPrint_r(TreeNode* root){//中序遍历 if(root==NULL) return; if(root->left) midPrint(root->left); c原创 2015-06-21 09:47:55 · 5212 阅读 · 1 评论 -
排序算法之堆排序
堆的定义:1)完全二叉树,2)每个结点的值都大于其左右孩子结点的值。根据堆的定义可知,最大值就是根结点,其次就是根结点左右孩子结点中的一个…… 堆排序有两个很重要的过程:1)建堆,2)堆维护。实质上,这两个过程都可以通过一个函数来实现。void HeapAdjust(SqList* list, int obj, int length){ int tmp = lis原创 2015-06-30 08:41:34 · 928 阅读 · 1 评论 -
排序算法合集
排序算法复习大致结束了,主要有以下几种:冒泡排序、选择排序、简单插入排序、希尔排序、归并排序、快速排序、堆排序。#include #define MAXSIZE 1000using namespace std;class SqList{public: SqList():length(0){} SqList(int length1,int value=0):length(le原创 2015-06-30 08:43:37 · 986 阅读 · 0 评论 -
二叉树学习笔记
1、几乎所有关于二叉树的问题都可以用递归解决,二叉树和递归可谓相依相生;2、对于二叉树问题,递归的代码量往往比循环要简单很多,但简单不一定意味着好,递归的深度如果太大,容易引起栈溢出;3、遍历二叉树时,可以考虑使用栈存储二叉树;4、只要知道二叉树的前序和中序或后序和中序就可以还原二叉树,但前序和后序是不可以的。原创 2015-06-21 12:00:01 · 530 阅读 · 0 评论 -
二叉搜索树(C++)
#include using namespace std;typedef struct BiTNode{ int data; struct BiTNode *lchild, *rchild;}BiTNode,*BiTree;class solution{public: bool searchBst(BiTree root, int key, BiTree f, BiTree原创 2015-07-09 11:18:12 · 761 阅读 · 0 评论 -
自己写个list玩玩
/*如果采用单向链表,end()函数如何表示? *所以必须得采用循环链表的方式? * */#ifndef LIST#define LIST#includeusing namespace std;//声明template struct Node{ T data; struct Node* next; Node(struct Node* p):data(p->data原创 2015-06-15 16:30:17 · 683 阅读 · 0 评论 -
常见排序算法时间对比
原创 2015-06-16 10:26:18 · 941 阅读 · 0 评论 -
排序算法之快速排序
快速排序将以枢轴为界,将原数组分为两个部分,枢轴以前,值都小于枢轴的值,枢轴以后的值都大于枢轴。 采用递归的方法,对以枢轴为界的两个子序列进行快速排序,直至子序列长度为1。 1、快速排序的关键是枢轴的选取,主要有三种方法:1)选取第一个或最后一个作为枢轴值; 2)采用随机数生成器,生成枢轴值的下标;3)取第一个、最后一个、中间三者的中间值作为枢轴值,当数据量比较大的原创 2015-06-30 07:59:34 · 1507 阅读 · 0 评论