
数据结构
文章平均质量分 50
微凉的墨-楠楠
一直是个学生党,努力活出我自己。
展开
-
数据结构中的常用查找
查找:静态查找(顺序查找、折半查找、分块查找)+动态查找(二叉排序树、平衡二叉树、B-树查找)一、静态查找:不改变原结构的顺序。1、顺序查找逐个的与关键字进行比较。若找到相等的,则查找成功;反之,失败。更适合顺序存储结构和链式存储结构的查找表2、折半查找给定的序列是一个有序序列。把序列分成左中右,左把给定值与中间值进行比较,确定下次查找是在左还是右;继续原创 2015-09-18 11:46:44 · 953 阅读 · 0 评论 -
字符串匹配的KMP算法
摘自:http://kb.cnblogs.com/page/176818/字符串匹配是计算机的基本任务之一。 举例来说,有一个字符串"BBC ABCDAB ABCDABCDABDE",我想知道,里面是否包含另一个字符串"ABCDABD"? 许多算法可以完成这个任务,Knuth-Morris-Pratt算法(简称KMP)是最常用的之一。它以三个发明者命转载 2016-04-21 09:55:46 · 459 阅读 · 0 评论 -
队列
/*队列:分配一块连续的存储单元存放队列中的元素,并附设两个指针,分别指示队头元素,和队尾元素的存储位置,分别称为队头指针和队尾指针。判断是否为空的条件:Q.front==Q.rear==0;但是不能用Q.rear==maxSize来作为判断队列为空的条件。有可能出现假溢出,栈的应用:括号匹配,进制转换,迷宫求解递归中的栈:程序每一个递归调用自己的时候,原创 2015-09-02 10:44:22 · 403 阅读 · 0 评论 -
用非递归的方式对于树的各种实现
//非递归的实现一些关于树的东西#include#includeusing namespace std;typedef struct BiNode{int data;BiNode *lChild, *rChild;}BiNode,BiTree;//非递归实现前序遍历void preOrder(BiTree原创 2015-09-07 10:55:55 · 588 阅读 · 0 评论 -
数据结构中的排序
排序就是将一个元素的任意序列重排成一个按关键字有序的序列。如果使用某一排序算法排序后,Ri和Rj的相对位置并未发生变化,则称这个排序算法是稳定的。否则就称这个算法是不稳定的。内部排序:在排序期间,元素全部存放在内存中的排序;外部排序:在排序期间元素无法全部同时存放在内存中,必须在排序的过程中根据要求不断的在内外存之间移动的排序。插入排序:每一次将一个待排序的记录,按其关键字的大小插原创 2015-09-19 10:23:01 · 439 阅读 · 0 评论 -
树 前序中序后序 递归 遍历
void qianxubianli(Node *pRoot){if (pRoot == NULL){return;}cout data qianxubianli( pRoot->pLeft);qianxubianli( pRoot->pRight);}void zhongxubianli(Node *pRoot){if (pRoot == NULL)原创 2015-09-04 20:36:18 · 521 阅读 · 0 评论 -
用递归的方式对于树的各种实现(前序、中序、后序、层次、节点、深度、交换左右子树)
/*关于树的一些实现方法,此处都是通过递归遍历实现的。递归实现树的建立,递归前序中序后序(stack),层次遍历树(queue),递归求树的节点,递归求深度,递归的交换左右子树,\stack 和 queue使用的时候,都是尖括号stackqueue等等*/#include #include#include#include#include原创 2015-09-06 21:06:00 · 593 阅读 · 0 评论 -
判断单向链表中是否有环
//判断单链表中是否有环/*基本思想:用两个指针,pSlow和pFast,一个快一个慢。慢的跳一次,快的跳两次。当快的追上慢的的时候就表示有环了*/struct listtype{int data;struct listtype* next;}list;int find_circle(list *head){li原创 2015-09-21 15:41:40 · 398 阅读 · 0 评论 -
字符反转
#include#includeusing namespace std;int main(){string s = "abcdefghijklm";//cout cout int len = s.length();char tmp = 'a';for (int i = 0; i tmp = s[i];s[i] = s[len原创 2015-09-21 19:23:00 · 393 阅读 · 0 评论 -
前序中序非递归遍历树
如果只需要前序中序,则Node中是不需要flag的。但是如果是在后序中,则需要。#include#include#include#includeusing namespace std;class Node{public:int data;Node *pLeft = NULL;Node *pRight = NULL;};原创 2015-09-05 16:10:09 · 373 阅读 · 0 评论 -
《数据结构与算法分析C++》 维斯 第一章 笔记
指数,对数,级数,模运算,证明方法。递归的简单介绍:递归并不是循环逻辑。因为他是从f(5)到f(4),一直下去,而非,从f(5)还在f(5).所以,递归并不是循环。当编写递归历程的时候,关键是呀牢记递归的四条基本法则:(1)基准情形:某些基准情形不用递归就能求解(2)不断推进:对于那些需要递归求解的情形,总能朝着基准情形方向靠近(3)设计法则:假设所有的递归调用都能运行原创 2015-07-01 19:39:16 · 1321 阅读 · 0 评论 -
栈
//栈的顺序存储/*栈顶指针:S.top,初始时:S.top=-1;栈顶元素:S.data[S.top]进栈操作:栈非空的时候,先将栈顶指针减1,再将栈顶元素进去出栈操作:栈非空的时候,先取栈顶元素,再将栈顶指针减1。栈空条件:S.top==-1;栈满条件:S.top==MaxSize-1;栈长:S.top+1;所以,S.top为当前指针所在的位置S.data[原创 2015-09-02 09:21:30 · 417 阅读 · 0 评论 -
线性表
/*线性表是有相同数据类型的n个数据元素的优先序列,三个特征:(1)所有的数据的类型相同 (2)由有限个数据元素构成 (3)数据元素与位置相关*///静态分配#includeusing namespace std;#define MaxSize 50typedef int ElemType;typedef原创 2015-08-26 17:00:34 · 284 阅读 · 0 评论 -
查找算法的实现 顺序和折半
#include#includeusing namespace std;//对于数组的顺序查找//int search(int a[],int key,int count ){// int x = 0;//// for (int i = 0; i // // if (a[i] == key)// {// ++x;// cout //原创 2015-09-18 11:52:18 · 493 阅读 · 0 评论 -
字符串匹配算法以及实现 转载
摘自:http://blog.youkuaiyun.com/airfer/article/details/8951802/字符串匹配(string match)是在实际工程中经常会碰到的问题,通常其输入是原字符串(String)和子串(又称模式,Pattern)组成,输出为子串在原字符串中的首次出现的位置。通常精确的字符串搜索算法包括暴力搜索(Brute force),KMP, BM(Bo转载 2016-04-21 10:37:07 · 450 阅读 · 0 评论