数据结构及算法
文章平均质量分 58
数据结构及算法代码实现
yinhaijing_ss
这个作者很懒,什么都没留下…
展开
-
二分查表(又称:折半查表)
二分查找法特点:1.对有序查表进行查数,其时间复杂度(O(log2 n))大大减少; 2.其算法为:每次与中间元素进行比较,如果相等,则找到,故返回该值下标; (设该查表为递增表)如果中间元素大于该数值(说明:该数在左半端; )将中间元素下标赋给右值right; 如果中间元素小于该数值,将中间元素下标赋给左值left.然后继续循环此操作,直到left = right原创 2017-10-16 19:43:52 · 3002 阅读 · 0 评论 -
二叉搜索树(二叉排序树、二叉查找树)
二叉搜索树特点操作1. 二叉搜索树二叉搜索树又称二叉排序树/二叉查找树,它或者是一棵空树,或者是具有以下性质的二叉树:若它的左子树不为空,则左子树上所有节点的值都小于根节点的值。若它的右子树不为空,则右子树上所有节点的值都大于根节点的值。它的左右子树也分别为二叉搜索树2. 特点二叉搜索树的中序遍历有序。3 . 操作3.1 查找数据:判断要查找的数据是否等于当前节点的值(初始值:cur=_root)i. 若等于,返回当前节点;ii. 若小于,向左子树进行查找;(cur=c.原创 2021-05-10 16:25:49 · 354 阅读 · 0 评论 -
堆排序
1. 堆1.1 堆堆(heap)是计算机科学中一类特殊的数据结构的统称。堆通常是一个可以被看做一棵树的数组对象。堆总是满足下列性质:堆中某个结点的值总是不大于或不小于其父结点的值;堆总是一棵完全二叉树。1.2 分类最大堆:根结点最大的堆最小堆:根结点最小的堆1.3 建堆步骤从最后一个非叶子节点开始(自下而上构建每一个子树),对每一个非叶子节点进行向下调整操作(最后一个节点的父节点 i=(end-1) / 2,其中end=n-1);i–,继续向前调整非叶子节点,直到调整完所有的非原创 2021-04-14 12:39:21 · 224 阅读 · 0 评论 -
双向链表
#includeusing namespace std;typedef int DataType;class LinkNode{ friend class Link; //要想在类Link中访问LinkNode,可将Link定义为LinkNode的友元类public: LinkNode(const DataType &x) :_data(x), _原创 2015-09-11 13:45:52 · 373 阅读 · 1 评论 -
Vector和List的实现
Vector和List基本操作的实现前言基于STL,实现Vector和List的一般功能。 Vector底层实现为:顺序表 List底层实现为:带头节点的双向循环链表(优点:增删速度快,时间复杂度为O(1))<一>基本功能构造函数拷贝构造函数赋值运算符重载析构函数尾插尾删头插头删插入删除查找<二>实现代码点击查看...原创 2018-04-19 11:59:38 · 979 阅读 · 0 评论 -
String类的实现
string类的实现<一>实现方法深拷贝实现浅拷贝实现<二>string类的相关操作构造函数拷贝构造函数赋值运算符的重载析构函数逻辑运算符==、!=、>、>=、<、<=的重载算术运算符+、+=的重载简单的增删查改操作<三>深拷贝方法实现string类点击查看c++代码需注意:...原创 2018-04-18 20:50:14 · 355 阅读 · 0 评论 -
栈的基本操作的实现
栈的基本操作前言栈是一种特殊的线性表 1. 栈是限定仅在表尾进行插入和删除的线性表 2. 栈又称为LIFO(Last In First Out)的线性表<一>实现方法栈的顺序存储方式栈的链式存储方式<二>顺序栈的实现主要实现以下几点功能:1.初始化 2.栈的销毁 3.入栈 4.出栈 5.取栈顶元素点击...原创 2018-04-20 09:15:44 · 537 阅读 · 0 评论 -
c语言实现不带头节点的单链表
不带头节点的单链表<一> 实现外部接口实现简单增删查链表逆序打印实现约瑟夫环<二>需注意点插入时,要判断插入的点是否为头节点(这就确定头节点是否要改变)删除时,要考虑单链表是否为空;是否删除的是头节点(交换法需:多考虑是否删除的是尾节点)针对指定位置删除元素有两种方法: <1>一般方法使用一个prev指针保存上一个节...原创 2018-03-27 23:23:08 · 806 阅读 · 0 评论 -
深度优先搜索
深度优先搜索(DFS:Depth First Search)算法实现如下:从当前初始状态开始深度搜索,能往下走就往走,不能走就返回上一层,继续寻找没有被访问的结点,直至所有结点都被访问为止。1.使用栈实现(相关算法)将初始结点压栈; while(栈非空) { 取出栈顶点,暂时存储这个结点node_t信息; 访问该节点,并标示已访问; 将栈顶元素原创 2018-01-22 21:36:04 · 205 阅读 · 0 评论 -
静态顺序表的实现(数组实现)
静态顺序表静态顺序表实现的文件seqlist.c"增删查改"以及测试代码如下:#include"SeqList.h"void InitSeqList(SeqList *seq) //1. 初始化(无需将每个元素置0,只需设置有效元素个数就可以){ assert(seq); seq->size = 0;}void AddBack(SeqList *seq, T原创 2017-12-04 14:20:39 · 713 阅读 · 0 评论