![](https://img-blog.csdnimg.cn/20190514173246813.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
数据结构和算法
文章平均质量分 50
数据结构和算法笔记。
暂代
须知少日拿云志,曾许人间第一流。
展开
-
STL常用算法总结(持续更新)
STL中的谓词是什么? STL中的谓词是一个可调用的对象,其返回结果是一个能用作条件的值。标准库算法所使用的谓词分为两类:一元谓词(意味着它们有一个参数)和 二元谓词(意味着它们有两个参数)。接受谓词参数的算法对输入序列中的元素调用谓词。因此,元素类型必须能转换为谓词的参数类型。建议:本文中很多地方用到了Lambda表达式,如果不清楚的读者可以参考:C++可调用对象文章目录一、排序1....原创 2019-04-21 14:49:40 · 506 阅读 · 0 评论 -
字符串切分的几种方式讲解
开发中,我们常常要用到 “ 字符串切分 ” 这种操作,比如:命令行的处理,消息格式的处理等。下面我讲解几种C/C++常用的字符串切分方式一、自定义如果项目这方面的需求比较简单,那么可以自己写一个字符串切分的函数#include <iostream>#include <string> // std::string#include <vector>...原创 2019-03-26 14:52:56 · 4711 阅读 · 0 评论 -
C++STL中sort用法介绍
自定义STL中sort的排序规则前情提要:0、要使用sort,首先需要包含头文件&amp;lt; algorithm&amp;gt;1、sort函数可以指定两个参数,也可以指定三个参数。(1)第一个是要排序的数组的起始地址。(2)第二个是结束的地址(最后一位要排序元素的后一位的地址)(3)第三个参数是排序的方法,可以是从大到小也可是从小到大,还可以不写第三个参数,此时默认的排序方法是升序排序。2、...原创 2018-09-29 20:30:22 · 14665 阅读 · 0 评论 -
八种排序算法实现和优化方案_C
注:由于时间关系,本文刚开始只列出这些排序算法的代码实现以及优化版本的代码实现,本篇内容会在短期内持续更新,加上我个人对原理的理解和对代码的讲解,直到本篇趋于完美。一、插入排序插入排序的排序原理就决定了它的适用于以下两种场景:所排序的数据量比较小所排序的序列接近有序 空间复杂度:O(1) 最优时间复杂度:O(N) 最差时间复杂度:O(N^2)void ...原创 2018-03-22 12:40:56 · 592 阅读 · 0 评论 -
改良版的冒泡排序算法
改良版冒泡排序原创 2017-12-06 13:06:27 · 602 阅读 · 0 评论 -
单链表的逆置算法解析
问题描述:比方说,一个不带头节点的单链表原来从头到尾存储的是(1, 2, 3, 4, 5),逆置后链表从头到尾存储的是(5,4,3,2,1)解决思路:我暂时想到的有三种解法: 1)从头到尾依次访问旧的链表节点,每访问一个,就将这个节点的数据用头插的方法插入到新的链表中,这样当旧的链表访问完毕时,新的链表就构造成功了,然后释放掉原来的链表空间,将头指针指向新的链表头节点。 2)和第一个...原创 2018-10-31 12:44:46 · 20284 阅读 · 5 评论 -
队列简易教程
队列(FIFO)概论基本概念只在线性表的一端进行添加元素,在线性表的另一端进行删除元素的数据结构称为队列。这种规则称为 **FIFO(first input first output)**原则。 进入队列的一端称为“队尾”,出队列的一端称为“队头”。应用场景根据队列的存储特性,只需要使用数据结构实现一种顺序执行 / 访问的场景可以使用队列。计算机开发中使用队列这种逻辑结构也非常广泛,像...原创 2018-10-28 09:03:48 · 587 阅读 · 1 评论 -
栈简易教程
栈(FILO)copyright@分时天月概论基本概念只能从线性表的一端进行插入和删除元素操作的数据结构即为栈。应用场景根据概念我们就可以得出,凡是只在数据结构一端进行插入删除的,并且不需要支持随机存取的场景就可以采用栈结构。下面列举一些栈的使用场景:C / C++ 函数调用是借助 栈帧 结构实现的,栈帧即栈结构(有兴趣的读者可以看看这个具体是怎么实现的)编译过程中的语法检查...原创 2018-10-26 11:28:32 · 338 阅读 · 0 评论 -
链表简易教程
链表copyright@分时天月请忽视我的画工~~一、概论1. 基本概念1.1 概念 逻辑结构上一个挨一个的数据元素,但是物理存储却没有占用一段连续空间的结构。示意图如下:由上图也可以看出,链表节点的构成:数据域 和 指针域。数据域存储链表需要存储的数据指针域存储后继节点在内存中的地址,即图中第一个节点指针域存储的 0xAB87AS,这个地址就是下一个节点的起始地址(...原创 2018-10-26 11:27:22 · 444 阅读 · 0 评论 -
顺序表简易教程
顺序表顺序表的各项操作我采用静态的方式讲解,因为我觉得如果需要支持动态扩容的线性结构,那么链表会是一个更好的选择,所以我通常使用顺序表结构只使用静态的就足够了。概述顺序表可以分为静态顺序表和动态顺序表两种,静态顺序表不可以扩容,一旦创建,它的容量就写死了,是多大就是多大,而动态顺序表则可以扩容。通常情况下,动态顺序表使用价值比较好一些,但是这也不一定,因为有时候我们确认了某些结构的空间不...原创 2018-10-19 17:26:19 · 510 阅读 · 0 评论 -
泛型编程实现结构Set
#include &lt;iostream&gt;//采用泛型编程的方式实现了一个支持交集,并集,差集,添加,删除方法的 set//规定这个集合不能包含相同元素//实现一个不包含重复数值域单链表//插入的时候按序插入//链表的节点template&lt;class T&gt;struct ListNode{ ListNode&lt;T&gt;* _next; T _ele...原创 2018-10-16 14:29:54 · 299 阅读 · 0 评论 -
单链表实现多项式相加
这个小项目用C语言实现代码中有我的注释代码://mylist.h#pragma oncetypedef int DataType;typedef char Variate;typedef struct Node{ DataType _elem; //项的系数 Variate _ch; //规定'#'表示此项为常数项 int _power; //项的次方 s...原创 2018-10-13 20:04:19 · 12158 阅读 · 0 评论 -
c语言_通讯录(非初级版)
之前说写一个改良版的通讯录,一直没有时间来写,下面我就讲一下这个要怎么写,只要跟着我的思路,相信你读完一定会有所收获(大佬请忽视这句话-.-!) 这个版本的通讯录是一个动态的版本并且会加上文件操作,解释一下这句话就是 这个版本的通讯录可以“无限”的增加联系人的信息(只要你的外存足够大),并且 可以将联系人的信息保存在外存而不是内存上,下次打开这个程序还可以读取以前 ...原创 2018-06-25 21:52:24 · 414 阅读 · 0 评论 -
动态内存管理_C
一、函数介绍 以下四个函数都包含在头文件< stdlib.h >1.malloc 函数原型:void *malloc(size_t size); 作用:从堆空间申请内存 函数参数:需要申请的空间大小(字节数) 返回值:申请成功则返回一个指向申请到的内存的指针,失败则返回NULL2.calloc 函数原型:void *calloc(size_t num,siz...原创 2018-04-30 09:17:35 · 327 阅读 · 0 评论 -
c语言_通讯录(初级版)
这是一个简单的通讯录(实现方案是初级版,并且只能在程序运行期间存在(没有写入文件))(以后还会写一个用动态内存分配+实现文件存储的版本)代码:#include<stdio.h>#include<string.h>#include<stdlib.h>#include<Windows.h>#pragma warning(dis...原创 2017-11-27 21:23:28 · 1444 阅读 · 0 评论 -
二叉搜索树操作详解
二叉搜索树(二叉排序树)是一种搜索结构,它通常具有一下特点:若他的左子树不为空,则左子树上的所有节点的值都小于根节点的值若它的右子树不为空,则右子树上所有节点的值都大于根节点的值它的左右子树也分别为二叉搜索树中序遍历的结果是升序序列 下面,我讲一下二叉搜索树的基本操作方法查找 若根节点不为空: 如果根节点key == 目标key,返回true 如果根节点key >...原创 2018-02-28 22:24:31 · 357 阅读 · 0 评论 -
C语言实现链表
用C语言实现数据结构和算法莫过于最爽的事。 —摘自CoolShellPS:这里我用C语言实现的链表是不带头节点的单链表,这个是链表里面实际操作中最容易出错的一种链表,我在代码中会指出需要注意的内容说明-&amp;amp;gt;SListHead.h 尾插:从单链表的尾部插入一个新的节点 尾删:从单链表的尾部删除一个节点 头插和头删就不用说明了吧。。。#include&amp;amp;lt;stdio...原创 2018-02-21 09:35:34 · 420 阅读 · 0 评论 -
c语言实现顺序表(动态)
代码如下,代码的解析附于代码中:#include&lt;stdio.h&gt;#include&lt;stdlib.h&gt;#include&lt;assert.h&gt;#define Init_size 5//使顺序表更加灵活typedef int DataType;//使顺序表具有通用性typedef struct SeqListD{ DataType *_pDa...原创 2018-01-15 13:18:31 · 5167 阅读 · 0 评论 -
C语言实现顺序表结构(静态)
用c语言实现一个静态的顺序表结构,读者注意我的编码风格原创 2017-12-06 13:00:19 · 399 阅读 · 0 评论