备战C++ 数据结构
文章平均质量分 58
chenxaioxue
每个人都会有自己坚持的某种信念
展开
-
用栈实现括号匹配问题
栈结构具有后进先出的特点。括号匹配问题描述:若表达式中包含三种括号:圆括号、方括号和花括号,它们可以相互嵌套。算法思想:检验算法中可设置一个栈,每读入一个括号,若是左括号,则直接进栈,等待相匹配的同类右括号;若读入的是右括号,且与当前栈顶左括号同类型,则二者匹配,将栈顶的左括号弹出,否则属于不合法情况。另外。如果输入序列已经读完,而栈中仍有等待匹配的左括号,或者读入一个右括号,而栈中已无等待匹...原创 2019-03-19 17:14:39 · 7242 阅读 · 0 评论 -
常见STL的实现和特点
STL来管理数据十分方便,省去了我们自己构建数据结构的时间.其实,STL的实现也是基于我们常见的数据结构.STL共有六大组件1、容器。2、算法。3、迭代器。4、仿函数。6、适配器。序列式容器:vector-数组,元素不够时再重新分配内存,拷贝原来数组的元素到新分配的数组中。list-单链表。deque-双端队列,是双向开口的连续线性空间(动态将多个连续空间通过指针数组接合在一...转载 2019-05-20 10:42:47 · 1113 阅读 · 0 评论 -
C++中short、int、long、float、double的取值范围及溢出判断
C \ C++中整型数据都是有数据范围的,对溢出的数据处理机制一般是数据值和数据范围值进行求模处理,求模可以这么理解,数据描述是一个数据描述范围最小值到最大值的一个闭环循环,求模后的值会仍在这个闭环范围内,例如钟表,可用1~12来一个闭环来描述,13则就是从新回到1(13 % 12)。在C\C++中,一个整型数据val,其当前类型下的描述值可用如下公式计算:描述值 = (val - 当前类...原创 2019-05-08 19:39:58 · 25873 阅读 · 3 评论 -
C++ String类笔记
今天刷剑指offer第2道题了,来看看String吧。string类使用起来比字符数组简单,同时提供将字符串作为一种数据类型的表示方法。要使用string类,得在程序中包含头文件,且string类位于名称空间std中,string分为C风格字符串和C++的,在此都先在头文件安排进来。#include<string>#include<cstring>using ...原创 2019-05-04 11:23:17 · 129 阅读 · 0 评论 -
Vector 笔记
向量、容器(Vector)是一个封装了动态大小数组的顺序容器(Sequence Container)。跟任意其它类型容器一样,它能够存放各种类型的对象。可以简单的认为,向量是一个能够存放任意类型的动态数组。容器特性:1.顺序序列:顺序容器中的元素按照严格的线性顺序排序。可以通过元素在序列中的位置访问对应的元素。2.动态数组:支持对序列中的任意元素进行快速直接访问,甚至可以通过指针算述进...转载 2019-05-02 21:19:53 · 119 阅读 · 0 评论 -
线性链表实现对二进制数加1运算
描述:建立一个带头结点的线性链表,用以存放输入的二进制数,链表中每个结点的data域存放一个二进制位,并在此链表上实现对二进制数加1的运算。分析:算法描述:void buildAdd(linklist l){//实现加1运算 node *q,*r,*s; q=l->next; r=l; while(q!=NULL){//找出最后一个值域为0的结点...原创 2019-03-17 17:00:21 · 648 阅读 · 1 评论 -
一元多项式的表示及相加
线性表的应用——一元多项式的表示及相加对于一元多项式,可以用线性表来处理,可以采用顺序存储或者是链式存储(一)一元多项式的顺序存储表示1>.一元多项式Pn(x)只存储该一元多项式各项的系数,每个系数所对应的指数项则隐含在存储系数的顺序表的下标中。即p[0]存系数p0,对应为的系数。p[n]对应存系数pn,对应为的系...原创 2019-03-17 16:10:41 · 2398 阅读 · 3 评论 -
排序算法——交换类排序
根据排序时数据所占用存储器的不同,可将排序分为两类,一类是整个排序过程完全在内存中进行,成为内部排序。另一类是由于待排序记录数据太大,内存无法容纳全部数据,需要借助外部存储才能完成,称为外部排序。按照方法可以分为交换类排序和插入类排序。先看下交换类排序,它的思想是通过一系列交换逆序元素进行排序的方法。1、冒泡排序(相邻比序法)算法思想:它通过对相邻的数据元素进行交换,逐步将待排序序...原创 2019-05-08 15:16:13 · 1826 阅读 · 0 评论 -
二叉查找树
二叉排序树又称为二叉查找树递归定义:二叉排序树可以是空树,或具有如下性质:1、若它的左子树非空,则左子树上所有的结点的值均小于根节点的值;2、若它的右子树非空,则右子树上所有结点的值均大于或者等于根结点的值。3、它的左右子树也分别为二叉排序/查找树二叉排序树的存储结点为二叉树,使用二叉链表作为存储结构!!二叉排序树的插入与创建(1)二叉排序树的插入算法思想:1>.若二叉树是...原创 2019-03-16 17:12:05 · 315 阅读 · 0 评论 -
分块查找
分块查找要求将列表组织成两种索引顺序结构。1、先将列表分成若干子表。一般,块(子表)长度均匀,最后一块可以不满。每块中元素任意排列,即块内无序,但是块间有序。2、构建一个索引表。其中每个索引项对应一个块并记录每块的起始位置,以及每块中的最大关键字(或最小关键字)。索引表按照关键字有序排列。分块查找基本过程:1、将待查关键字k与索引表中的关键字进行比较,以确定待查记录所在的块。具体可用顺序查...原创 2019-03-16 15:11:04 · 233 阅读 · 0 评论 -
折半查找法
折半查找又称为二分查找,要求:1.必须采用顺序存储结构;2.必须按照关键字大小有序排列算法思想:首先将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前后两个子表,再按上述重复查找折半查找优点是比较次数少,查找速度快,平均性能好缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。非递归算法描述:...原创 2019-03-16 15:08:03 · 1728 阅读 · 0 评论 -
顺序查找法
特点:用所给关键字与线性表中各元素的关键字逐个比较,直到成功或失败。存储结构通常为顺序结构也可以为链式结构。算法思想:在表的一端设置一个称为“监视哨”的附加单元,存放要查找元素的关键字。从表的另一端开始查找,如果在“监视哨”找到要查找元素的关键字,返回失败信息,否则返回相应的下标。没有顺序排序的数据:只能顺序查找,如果数据排序了使用顺序查找和折半查找都可以。顺序查找:速度慢#inclu...原创 2019-03-15 17:01:19 · 955 阅读 · 0 评论 -
红黑树
平衡二叉搜索树(Self-balancing binary search tree)又被称为AVL树(有别于AVL算法),且具有以下性质:它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。平衡二叉树的常用实现方法有红黑树、AVL、替罪羊树、Treap、伸展树等。 最小二叉平衡树的节点总数的公式如下 F(n)=F(n-1)+F(n-2)+1 这个类似于一个...转载 2019-05-20 14:54:23 · 127 阅读 · 0 评论