数据结构与算法杂文
数据结构与算法杂文
亓官劼
大家好,我是亓官劼(qí guān jié),在各个平台分享前端开发、python后端开发、小程序开发、数据结构与算法、docker、Linux常用运维、NLP等相关技术博文。如果喜好博主的文章的话可以关注博主的微信公众号【亓官劼】(读音:qí guān jié),也可以加入QQ交流群545611263进行交流。
展开
-
第三章 栈和队列 队列
第三章 栈和队列 大家好,我叫亓官劼(qí guān jié ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期,加油~博客地址为:亓官劼的博客本文原创为亓官劼,请大家支持原创,部分平台一直在盗取博主的文章!!!博主目前仅在CSDN中写博客,唯一博客更新的地址为:亓官劼的博客3.2 队列3.2.1 队列的基本概念队列(Queue),是一种操作受限的线性表,只允许在表的一端进行插入,另一端进行删除。是一种先进先出的线性表(FIFO)。入队:向队列中插入元素出队:删除元素队头(原创 2020-06-22 21:54:22 · 3364 阅读 · 24 评论 -
第三章 栈和队列 栈的实现
第三章 栈和队列 大家好,我叫亓官劼(qí guān jié ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期,加油~博客地址为:亓官劼的博客本文原创为亓官劼,请大家支持原创,部分平台一直在盗取博主的文章!!!博主目前仅在CSDN中写博客,唯一博客更新的地址为:亓官劼的博客3.1 栈3.1.1 栈的定义与基本操作栈(stack)是只允许在一端进行插入或者删除操作的线性表,是先进后出(FILO)的线性表。栈的基本操作有:InitStack(&s); 初始化一个空栈S原创 2020-06-22 21:52:49 · 3374 阅读 · 24 评论 -
链表常用的几个操作
大家好,我叫亓官劼(qí guān jié ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期,加油~博客地址为:亓官劼的博客本文原创为亓官劼,请大家支持原创,部分平台一直在盗取博主的文章!!!博主目前仅在CSDN中写博客,唯一博客更新的地址为:亓官劼的博客2.7 链表常用的几个操作:求最值ElemType GetMax(LinkList L) { LNode* p = L->next; ElemType m = p->data; while (p){.原创 2020-06-14 17:54:22 · 1695 阅读 · 0 评论 -
顺序表和链表的比较
2.6 顺序表和链表的比较 大家好,我叫亓官劼(qí guān jié ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期,加油~博客地址为:亓官劼的博客本文原创为亓官劼,请大家支持原创,部分平台一直在盗取博主的文章!!!博主目前仅在CSDN中写博客,唯一博客更新的地址为:亓官劼的博客顺序表链表存取方式可以顺序存取,也可以随机存取只可以顺序存取按值查找(有序)可以使用折半查找,O(log2N)只可以顺序查找O(N)插入、删除需要移动大量原创 2020-06-14 17:53:39 · 1568 阅读 · 1 评论 -
第二章 线性表 双链表 循环链表
第二章 线性表 大家好,我叫亓官劼(qí guān jié ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期,加油~博客地址为:亓官劼的博客本文原创为亓官劼,请大家支持原创,部分平台一直在盗取博主的文章!!!博主目前仅在CSDN中写博客,唯一博客更新的地址为:亓官劼的博客2.4 双向链表(双链表)在单链表中只有一个指向其后继节点的指针,导致单链表只能从头结点依次顺序的向后遍历,访问后继结点的效率为O(1),但是访问前继结点的效率为O(1),为了解决这个问题,我们引入了双链表。原创 2020-06-14 17:53:08 · 1644 阅读 · 51 评论 -
第二章 线性表 线性表的链式表示和实现
2.3 线性表的链式表示和实现由于顺序表的插入、删除操作需要移动大量的元素,影响运行效率,因此引入了线性表的链式存储。链式存储线性表时,不需要使用地址连续的存储单元,即它不要求逻辑上相邻的两个元素在物理位置上也相邻,这里使用指针来表示逻辑间的关系。### 2.3.1 单链表的定义线性表的链式存储又称为单链表,它是指通过一组任意的存储单元来存储线性表种的数据元素。为了建立数据元素之间的线性关系,除了存储元素自身的信息之外,还存放一个指向其后继节点的指针。原创 2020-06-13 21:44:20 · 4374 阅读 · 47 评论 -
第二章 线性表 顺序表的两种实现方法及9种基本操作的实现
**文末附完整测试程序代码**## 2.2 线性表的顺序表示### 顺序表的定义线性表的顺序存储又称为顺序表。它是用一组地址连续的存储空间来依次存储线性表中的数据元素,从而使得逻辑上相邻的两个元素在物理位置上也相邻。顺序表的特点为:表中元素的逻辑顺序与物理顺序相同。我们顺序表的定义也可以根据数组的分配类型来分为动态分配和静态分配。原创 2020-06-13 15:53:40 · 6388 阅读 · 52 评论 -
第二章 线性表 线性表的定义和基本操作
第二章 线性表 大家好,我叫亓官劼(qí guān jié ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期,加油~博客地址为:亓官劼的博客本文原创为亓官劼,请大家支持原创,部分平台一直在盗取博主的文章!!!博主目前仅在CSDN中写博客,唯一博客更新的地址为:亓官劼的博客 数据结构核心原理与算法应用 2.1 线性表的定义和基本操作2.1.1 线性表的定义线性表原创 2020-06-13 15:50:54 · 2388 阅读 · 0 评论 -
第一章 绪论
第一章 绪论 大家好,我叫亓官劼(qí guān jié ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期,加油~博客地址为:亓官劼的博客本文原创为亓官劼,请大家支持原创,部分平台一直在盗取博主的文章!!!博主目前仅在CSDN中写博客,唯一博客更新的地址为:亓官劼的博客 数据结构核心原理与算法应用 1.1 数据结构的基本概念1.1.1 基本概念和术语数据:原创 2020-06-13 12:44:29 · 3639 阅读 · 38 评论 -
Vector创建二维数组
Vector创建二维数组#include <iostream>#include <vector>using namespace std;int main(){ //创建一个[2222][3333]的二维数组 vector<vector<int> > dp(2222,vector<int>(3333)); return 0;}原创 2020-10-15 20:53:44 · 2502 阅读 · 75 评论 -
C/C++实现复数ADT相关功能
C/C++实现复数相关运算C/C++实现复数相关运算,相关解释在代码中进行注释。原创亓官劼,请勿抄袭,转载请注明出处。实现了复数的ADT,基本操作有创建复数、初始化、获取实部、获取虚部、加法、减法、乘法、打印复数等操作。#pragma warning(disable : 4996)#include<iostream>#include<cstdio>#include<cmath>#include<cstdlib>#include<s原创 2020-05-22 20:26:19 · 3825 阅读 · 34 评论 -
Gcd最大公约数
Gcd最大公约数pythondef gcd(a, b): if a % b == 0: return b else: return gcd(b, a % b)C++简单原始版本:int gcd(int a,int b){ return a%b == 0 ? b : gcd(b,a%b);}简化一点int gcd(int a,int b){ return b == 0 ? a : gcd(b,a%b);}再简化一点in原创 2020-05-22 20:18:15 · 2318 阅读 · 1 评论 -
输出浮点数自动忽略后面多余0的方法
输出浮点数自动忽略后面多余0的方法 很多小伙伴在使用%f来输出浮点数时,后面会跟着多余的0,有的题目会要求自动省略后面的0,下面就来提供一种方法来自动省略浮点数后多余的0的方法。我们可以使用%g来输出浮点数。看下面这段代码:#include <stdio.h>int main(){ float a = 3.5; printf("%f\n",a); printf("%g\n",a); return 0;}输出为:3.5000003.5..原创 2020-05-22 20:03:41 · 12606 阅读 · 21 评论 -
为什么同样的算法,你的程序却一直超时? 算法竞赛你不得不知道的小技巧
不知道大家有没有经常遇到这样的一个困扰,为什么同样的算法,你的程序却一直超时?大家用的都是暴力大法,为什么别人的能过所有数据,而你的却只能过前几个样例;同样都是使用dp,为什么你的比别人的慢了那么多,有时候最后一个测试点都超时!原创 2020-04-05 15:39:25 · 18346 阅读 · 155 评论 -
一文带你看懂链表的奥秘 手把手教你实现链表的各项操作
一文带你看懂链表的奥秘 手把手教你实现链表的各项操作很多人刚开始学习数据结构与算法这门课的时候都对链表有一些恐惧、懵逼,看不懂书上要表达的意思,照抄书上代码却又运行不起来,真的是10行代码9个error,把小伙伴们折磨的苦不堪言,今天博主就带领大家来探究一下线性表的顺序表达和链式表达,手把手的教大家实现链表的各种操作。什么的链表说到链表,首先我们要知道链表是什么。很多小伙伴都知道链表,但...原创 2020-03-18 13:45:16 · 5228 阅读 · 2 评论 -
第九届蓝桥杯第四题 测试次数 (动态规划入门)
标题:测试次数x星球的居民脾气不太好,但好在他们生气的时候唯一的异常举动是:摔手机。各大厂商也就纷纷推出各种耐摔型手机。x星球的质监局规定了手机必须经过耐摔测试,并且评定出一个耐摔指数来,之后才允许上市流通。x星球有很多高耸入云的高塔,刚好可以用来做耐摔测试。塔的每一层高度都是一样的,与地球上稍有不同的是,他们的第一层不是地面,而是相当于我们的2楼。如果手机从第7...原创 2019-11-13 09:42:54 · 4794 阅读 · 29 评论 -
第八届蓝桥杯省赛 C/C++大学B组 第八题 包子凑数(动态规划、完全背包问题)
第八届蓝桥杯省赛 C/C++大学B组 第八题 包子凑数(动态规划、完全背包问题)标题:包子凑数小明几乎每天早晨都会在一家包子铺吃早餐。他发现这家包子铺有N种蒸笼,其中第i种蒸笼恰好能放Ai个包子。每种蒸笼都有非常多笼,可以认为是无限笼。每当有顾客想买X个包子,卖包子的大叔就会迅速选出若干笼包子来,使得这若干笼中恰好一共有X个包子。比如一共有3种蒸笼,分别能放3、4和5个包子。当顾客想买11个...原创 2019-11-16 20:37:25 · 5249 阅读 · 10 评论 -
动态规划(dynamic programming,dp)入门详解(一)
动态规划(dynamic programming,dp)入门详解(一)今天我们开始学习算法中非常重要的一项,动态规划。首先我们先来看下动态规划是什么。什么的动态规划动态规划(dynamic programming)是运筹学的一个分支,是求解决策过程(decision process)最优化的数学方法。动态规划一般可分为线性动规,区域动规,树形动规,背包动规四类。举例:线性动规:拦截导弹...原创 2019-11-13 23:28:31 · 4739 阅读 · 26 评论 -
C++ STL 容器篇之集合set
C++ STL 容器篇之集合setset是我们经常使用的一个容器,他是一个集合。不仅如此,它还把一些常用的操作封装在了set类型内,它在头文件中。声明set是一个模板类,每次使用时需要定义类型,例如set a这样来声明一个set。set一个int类型的数据集合。set的特性set的特性是,所有元素都会根据元素的键值自动排序,set的元素不像map那样可以同时拥有实值(value)和键值...原创 2019-10-28 14:30:39 · 4430 阅读 · 9 评论 -
C++ STL 容器篇之向量vector
C++ STL 容器篇之向量vectorvector是我们经常使用的一个容器,可以看他看作为一个不定长数组。不仅如此,它还把一些常用的操作封装在了vector类型内。声明vector是一个模板类,每次使用时需要定义类型,例如vector a这样来声明一个vector。vector是一个类似于int a[]的整数数组。操作下面列举一些vector常用的操作函数名作用...原创 2019-10-27 23:35:53 · 4321 阅读 · 6 评论 -
C++ STL 简介
C++ STL 简介什么是STLSTL全程为standard template library 即标准模板库,是由惠普实验室开发的一系列软件的统称。STL可分为容器、迭代器、空间配置器、配接器、算法和伪函数六个部分。下面来简单的介绍下比较常用的容器,迭代器和算法部分。容器STL中提供了很多的容器,即数据存储结构。这些存储结构各有优缺点,STL在底层实现中做了很多的优化,最终封装成了1...原创 2019-10-27 12:04:28 · 4465 阅读 · 6 评论