🦄个人主页:修修修也 🎏所属专栏:数据结构 ⚙️操作环境:Visual Studio 2022在上篇文章中我们提到了算法的设计要求中我们要尽量满足时间效率高和存储量低的需求.这里的时间效率大都指算法的执行时间.而算法的执行时间需通过依据该算法编制的程序在计算机上运行时所消耗的时间来度量.度量一个程序的执行时间通常有两种方法:事后统计方法和事前分析估算方法.
......
187
0
0
2024-08-03
顺序表前言顺序表是一种常见的线性数据结构,它使用一段连续的存储单元依次存储数据元素。这种数据结构的特点是逻辑上相邻的元素在物理存储位置上也相邻,因此可以快速地访问表中的任意元素。顺序表的实现通常依赖于数组,数组是一种静态的数据结构,一旦创建,其大小就是固定的。这意味着在顺序表中插入或删除元素可能会导致空间的浪费或不足。例如,如果在一个已经满了的顺序表中插入一
......
166
0
0
2024-07-02
算法的时间复杂度和空间复杂度前言算法的时间复杂度和空间复杂度是评估算法性能的两个重要指标。时间复杂度主要关注算法执行过程中所需的时间随输入规模的变化情况,而空间复杂度则关注算法执行过程中所需的最大存储空间或内存空间。对于时间复杂度,它通常表示为一个大O表示法,如O(n)、O(n^2)、O(log n)等,其中n代表输入规模的大小。一个优秀的算法应该具有较低的
......
144
0
0
2024-07-02
这篇文章我们来学习排序。1. 排序的概念及其运用1.1 排序的概念排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。 稳定性:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在
......
159
0
0
2024-05-03
前言我们在前面文章学到的数据结构:顺序表、链表,不管是单链表还是带头双向循环链表,以及后面的栈和队列。它们呢,其实都属于一类数据结构——线性表。那从这篇文章开始:我们将开始学习数据结构中的非线性结构,今天我们先来学习第一种——二叉树。1. 树的概念及结构那要学习二叉树,我们首先要知道什么是树。所以我们先来了解一下数据结构中树的概念及结构。如果不提数据结构,只
......
153
0
0
2024-05-03
一.链表的概念和结构链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表 中的指针链接次序实现的链表其实有很多种类: 1.单向 双向 2.带头 不带头 3.循环 不循环 其中共能组合出8种形式的链表; 这篇文章讲的是结构最简单的链表,也就是单向不带头不循环链表,即单链表。单链表中的元素称为节点,节点有一个数据data,还有一个结构体
......
162
0
0
2024-04-30
一.前言其实顺序表的增删查改和前面的通讯录差不多,可以说通讯录的底层原理就是顺序表。如果你会写通讯录,那么顺序表也不是问题。所以这篇文章不会讲得太详细,如果你有不懂的地方,请看前面通讯录的实现过程,那里讲的非常详细。通讯录二.顺序表1.概念及结构顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储; 在数组上完成数据的增删查
......
176
0
0
2024-04-30
一.前言从这篇文章开始,C语言的学习就结束了,接下来将会开启数据结构与算法的学习。早期,计算机刚被发明出来,内存空间并不是很大,所以不仅追求程序运行时的时间效率,还追求空间效率,但发展到今天,已经不太追求空间效率了,时间效率的追求是不变的。下面就让我们一起学习时间复杂度和空间复杂度是什么吧~二.时间复杂度1.概念1.时间复杂度是一个函数(注意这不是编程语言里
......
170
0
0
2024-04-30
线性数据结构Linear DS作用:将数据项以某种线性的次序组织起来1.栈Stack栈Stack维持了数据项后进先出LIFO的次序 stack的基本操作包括push,pop,isEmpty栈的两种实现1.左为栈顶,时间复杂度为O(n)#左边为顶,右边为低
class Stack:
def __init__(self):
self
......
216
0
0
2024-04-12
顺序栈的C语言实现导言大家好,很高兴又和大家见面啦!!! 在上一个篇章中,我们介绍了栈的基本概念,以及栈中的重要术语。通过介绍我们知道了栈的本质也是一种线性表,只不过它是一种操作受限的线性表。因此栈的实现方式与线性表的实现实际上是大同小异的。下面我们就来介绍一下如何通过C语言实现栈。一、栈的分类栈作为一种操作受限的线性表,它在存储时根据存储方式的不同,分为两
......
201
0
0
2024-04-04
单链表基本操作的实现导言大家好,很高兴又和大家见面啦!!! 在上一篇中,我们详细介绍了单链表的两种创建方式——头插法与尾插法,相信大家现在对这两种方式都已经掌握了。今天咱们将继续介绍单链表的基本操作——查找、插入与删除。在开始今天的内容之前,我们先通过尾插法创建一个单链表,如下所示://定义单链表数据类型
typedef struct LNode{
i
......
176
0
0
2024-03-06
0 概述链表作为一种基础的数据结构,在很多地方会用到。如在Linux内核代码,redis源码,python源码中都有使用。除了单向链表,还有双向链表,本文主要关注单向链表(含部分循环链表题目,会在题目中注明,其他情况都是讨论简单的单向链表)。1 定义先定义一个单向链表结构,如下,定义了链表结点和链表两个结构体。这里我没有多定义一个链表的结构体,保存头指针,尾
......
171
0
0
2024-02-26
⛺️生活的理想,就是为了理想的生活!📋 前言🌈hello! 各位铁铁们大家好啊,不知道大家对栈和队列的学习都学过了吧?那么用栈来实现队列你会做嘛? ⛳️栈和队列我们前面说了都是一种特殊的线性表,而在学习过程中用栈来尝试实现队列是很有必要来考验一下我们对栈和队列的掌握的!文章目录📋 前言一、 栈实现队列具体要求二、栈实现队列的核心思想2.1 如何插入的思想2.
......
232
0
0
2024-02-25
⛺️生活的理想,就是为了理想的生活!📋 前言🌈hello! 各位铁铁们大家好啊,栈和队列我们都学过了那么试试用队列实现栈你会嘛?。文章目录📋 前言一、队列实现栈的具体功能二、队列实现栈的具体思路2.1 实现栈区的具体方法2.1 栈区的插入思路2.1 栈区的删除思路三、队列实现栈(具体代码)3.1 队列的准备3.2 栈区的初始化3.3 栈区的插入3.4 栈区的
......
201
0
0
2024-02-25
⛺️生活的理想,就是为了理想的生活!📋 前言🌈hello! 各位宝子们大家好啊,栈区的实现我们前面已经讲了,而栈和队列都是特殊的线性表,今天我们就来看看队列是怎么实现的! ⛳️队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出FIFO(First In First Out)的特点。 文章目录📋 前言一、 队列的概念及结
......
198
0
0
2024-02-25