数据结构
YGLeeeon
这个作者很懒,什么都没留下…
展开
-
在C++中用堆来实现最基本的优先队列
许多应用程序都需要处理有序元素,但是不一定要求他们完全有序。很多情况下只需要处理当前最大元素,然后数据集合变化后再继续处理最大元素。在这种情况下,一个合适的数据结构应支持两种关键操作:1删除最大元素2插入元素。优先队列具备这种特质。优先队列可以使元素按照自定义的一个优先级来排序,并非加入顺序来排序,高效实现优先队列具有一定挑战性。《算法》一书中介绍了维护一个二叉堆来实现高效的优先队列插入删除操...原创 2019-07-26 01:15:24 · 678 阅读 · 0 评论 -
使用c语言自定义栈结构
首先,使用C++做开发的话,STL中是有栈可以直接使用的,但是用c语言的话就需要自己造“轮子”为了简单说明栈的特性以及使用情景,我搬了一道LeetCode算法题过来:算法-20.有效的括号给定一个只包括 '(',')','{','}','[',']'的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空...原创 2019-09-12 01:01:59 · 877 阅读 · 0 评论 -
使用c语言定义队列
上一篇实现了栈,底层使用的是数组,但是实现队列的话,数组就不太方便了,因为入队和出队不是在同一个位置进行的。可以想象一下用数组实现队列的话,我们需要定义一个多长的数组呢?所以显然对于一般的队列而言,使用链表来实现一个基本的队列是可行的。实际上也可以用数组来实现队列,请见下一篇“环形队列”。 同样的,实现基本队列需要做两个工作:1.定义队列的节点 2.基本操作接口。关...原创 2019-09-12 02:00:08 · 1838 阅读 · 0 评论 -
用c语言实现循环队列
上一篇实现了用链表作为底层结构的FIFO,其实队列只需要进行队首删除和队尾插入操作,如果了解过链表和数组的优缺点就知道,数组更适合快速的访问,而且只要不对数组的中间数据进行插入和删除,那么数组的读写速度要比链表快。那么我们就希望用数组来实现一个FIFO,问题就在于如何用充分利用一个定长数组来实现队列的插入、删除。设想队列的首和尾都只能向一个方向移动,那么队尾指针也指向了数组尾部,就...原创 2019-09-12 03:54:17 · 940 阅读 · 0 评论 -
排序算法:选择排序、插入排序、希尔排序、归并排序、快速排序
c++STL里面是有排序接口的,不过还是想学习一下经典的排序算法。我没有使用模板类来实现,而是指定了整形数组。上代码,方便以后看:***.h#pragma once#include <iostream>#include <vector>using namespace std;class MySort{public: MySort(); ~MyS...原创 2019-09-19 21:21:36 · 293 阅读 · 0 评论 -
使用递归进行链表合并
leetcode上有合并链表的题,大概是说将k个升序链表合成1个升序链表。(附上原题)将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4来源:力扣(LeetCode)链接:https://leetco...原创 2019-09-23 07:20:09 · 487 阅读 · 0 评论