常见数据结构与算法
常见数据结构与算法
肥嘟嘟的左卫门
这个作者很懒,什么都没留下…
展开
-
不同数据结构解决问题时的常用方法
数组: 1,常用方法:双指针,滑动窗口(本质也是双指针) 2,排序,对于很多问题,排完序后处理起来会方便很多原创 2022-04-25 18:17:54 · 894 阅读 · 0 评论 -
C++源码实践Cin
#include <iostream> using namespace std; int main() { /*第一种方式:输入流成员函数。缺点:是必须声明一个比较大的字符数组。优点:指定终止符,故可以分段获取被终止符分隔的每个部分*/ // char a[20]; // char b[20]; // cin.getline(a,20,'q'); // cin.getline(b,20,'q'); // cout << a << b<原创 2021-12-07 21:07:40 · 517 阅读 · 0 评论 -
C++源码实践:文本文件的读写
/* 函数声明 bool getline(istream &in, string &s) 功能说明: 从输入流读入一行到变量string s,及时是空格也可以读入。 –直到出现以下情况为止: •读入了文件结束标志 •读到一个新行(有重载函数可以指定行分隔符,默认是"\n".) •达到字符串的最大长度 –如果getline没有读入字符,将返回false,可用于判断文件是否结束.*/ #include <iostream> #include <fstream> us原创 2021-12-04 12:02:08 · 727 阅读 · 0 评论 -
删除链表的第N个节点
1,删除链表节点时,删除头节点和其他节点的操作不一样,为了统一删除节点的操作,增加虚拟头节点将大大简化操作。 2,双指针对于处理数组和链表的问题较为方便和快捷。 #include <iostream> using namespace std; struct link_list{ int data; link_list * next; link_list(int val = 0,link_list * ptr = nullptr):data(val),next(ptr)原创 2022-04-07 18:11:41 · 1779 阅读 · 0 评论 -
list基础
链表是由一系列连接在一起的结点构成,其中的每个结点都是一个数据结构,一般是动态分配、使用和删除的 链表的结点通常是动态分配、使用和删除的,允许链表在程序运行时增大或缩小。如果需要将新信息添加到链表中,则程序只需分配另一个结点并将其插入到系列中。如果需要从链表中删除特定的信息块,则程序将删除包含该信息的结点。 链表对数组和矢量的优点:删除和添加元素的速度快 尽管链表的编码和管理比数组更复杂,但它们有一些明显的优势。首先,链表可以容易地扩大或缩小。实际上,程序员并不需要知道链表中有多少个结点。它们只是根据需要在原创 2022-04-07 18:07:11 · 1482 阅读 · 0 评论 -
【动态规划】01背包问题
问题描述 有n个物品,它们有各自的体积和价值,现有给定容量的背包,如何让背包里装入的物品具有最大的价值总和? 为方便讲解和理解,下面讲述的例子均先用具体的数字代入,即:eg:number=4,capacity=8 i(物品编号) 1 2 3 4 w(体积) 2 3 4 5 v(价值) 3 4 5 ...转载 2019-08-29 08:17:17 · 291 阅读 · 0 评论 -
数据结构的应用场景
通用数据结构 可以简单的按照速度将通用数据结构划分为:数组和链表(最慢),树(较快),哈希表(最快)。增、删、改、查是四大常见操作,不过其实可以浓缩为两个操作:增和查。删除操作和和修改操作都是建立在查找操作上的,所以完美的数据结构应该是具有较高的插入效率和查找效率。 通用数据结构关系 可以根据下图选择合适的通用数据结构: 数组 使用场景 数组在以下三个情形下很有用: 1)数据...转载 2019-10-21 08:35:27 · 330 阅读 · 1 评论 -
数据结构之堆(Heap)
什么是优先队列? 队列是一种先进先出(FIFO)的数据结构。虽然,优先队列中含有队列两个字,但是,他一点也不像队列了。个人感觉,应该叫他优先群。怎么说那,一群守秩序(FIFO)的人去排队买东西当然是队列结构。但是,一群不守秩序的人去买东西,当然谁的拳头大谁就先结账。这个拳头的大小就是我们所谓的优先级。哎~我拳头不大~ 优先队列的实现方式有: 1.线性表 2.堆(Heap) 3.左高树(Leftis...转载 2019-10-21 08:28:39 · 307 阅读 · 0 评论