
数据结构与算法
文章平均质量分 73
喵汪wow
业精于勤荒于嬉,行成于思毁于随。
展开
-
链式队列的基本操作与实现(数据结构与算法)
【代码】链式队列的基本操作与实现(数据结构与算法)原创 2023-11-18 16:37:17 · 368 阅读 · 0 评论 -
循环队列(出队、入队、判空、长度、遍历、取头)(数据结构与算法)
头尾相连:循环队列将队列的头部和尾部连接起来形成一个环状结构,当队列的尾部指针达到数组的最末尾时,它将会绕回到数组的开头。涉及到移动、赋值原队列参数的函数参数列表如front,rear,都最好别用&引用,否则会修改原队列中的地址和数值如:SqQueue &Q。这意味着在将变量传递给函数时,将创建该变量的一份副本,并在函数内部使用该副本。这意味着该函数将直接操作传递给它的变量,而不是创建该变量的副本。使用SqQueue Q作参数列表时,函数引入的只是一份副本,不会修改原队列中变量、指针的空间地址与数值。原创 2023-11-18 14:20:19 · 2644 阅读 · 0 评论 -
(C++)栈的顺序存储及实现(出栈、入栈、判空、遍历、销毁)(数据结构与算法)
【代码】栈的顺序存储及实现(出栈、入栈、判空、遍历、销毁)(数据结构与算法)原创 2023-11-16 16:41:32 · 1023 阅读 · 0 评论 -
(C++)栈的链式存储结构(出栈、入栈、判空、遍历、销毁)(数据结构与算法)
链栈是运算受限的单链表、只能在链表头部进行操作 1.链表的头指针就是栈顶,链头为栈顶,链尾为栈底 2.栈的链式存储不需要附设头节点 3.基本不存在栈满的情况,不需要判断栈满,但要判空 4.空栈相当于头指针指向空 5.插入和删除仅在栈顶处执行 6.因为是动态分配空间,所以需要释放原创 2023-11-16 16:22:43 · 934 阅读 · 0 评论 -
栈的顺序存储实现(C语言)(数据结构与算法)
10//定义栈中元素的最大个数ElemType data[MaxSize] //静态数组存放栈中元素int top;//栈顶指针}SqStack;//初始化栈S.top = -1;//初始化栈顶指针//判断栈空if(S.top == 1) //栈空else //不空SqStack S;//声明一个顺序栈(分配空间)//.....后续操作......(增删改查)原创 2023-11-09 21:33:28 · 966 阅读 · 0 评论 -
静态链表的定义与基本操作(C语言版)(数据结构与算法)
由于静态链表没有指针来直接跳转到下一个节点,所以需要使用游标来遍历链表。在静态链表中如果要表示,这个结点是最后一个结点,游标的值可以设为 -1, 表示之后已经没有其他结点了。遍历静态链表,找到要插入位置的前一个节点。可以使用一个游标来遍历链表,初始时指向链表的头节点。将新节点的下一个节点指向前一个节点的下一个节点,然后将前一个节点的下一个节点指向新节点的位置。这是一个简单的线性查找算法,时间复杂度为O(n),其中n是链表中节点的数量。在静态链表的空闲位置上分配一个新节点,为新节点赋值。原创 2023-11-04 20:00:22 · 2822 阅读 · 0 评论 -
算法的基本概念(数据结构与算法)
数据结构提供了一组基本的操作来对数据进行存储、检索、插入、删除等操作,如查找、排序、插入、删除和修改等。数据结构是指数据元素之间的关系和组织方式,在计算机科学中被广泛应用于存储和操作数据的方法和技术。线性结构:数据元素之间存在一对一的关系,如数组、链表、栈和队列。非线性结构:数据元素之间存在一对多或多对多的关系,如树和图。链式存储结构:通过指针将数据元素连接在一起,如链表、树和图。顺序存储结构:使用一段连续的存储空间存储数据元素,如数组。数据元素是构成数据的基本单位,可以是数字、字符、记录等。原创 2023-11-04 16:42:57 · 209 阅读 · 0 评论 -
循环链表(单循环、双循环)(数据结构与算法)
循环单链表与普通单链表的主要区别在于,循环单链表的尾节点的指针不是指向 nullptr,而是指向头节点,形成一个闭环。这意味着,在循环单链表中,可以通过尾节点的指针重新回到头节点。循环双链表与普通双链表的主要区别在于,循环双链表既具有双向链表的前驱和后继关系,也具有循环遍历的能力。原创 2023-11-04 16:31:41 · 4144 阅读 · 0 评论 -
数据结构与算法超详细笔记(含代码分析)
2.1 顺序表的定义与实现2.2 顺序表的插入和删除2.3 顺序表的查找(按值、按位查找)3.1 单链表的插入与删除3.2 单链表的查找(按值、按位查找)3.2 单链表的建立(头插法、尾插法)持续更新中。原创 2023-11-04 10:16:51 · 227 阅读 · 0 评论 -
双链表详解(初始化、插入、删除、遍历)(数据结构与算法)
同时,删除节点后必须确保释放相应的内存空间,以防止内存泄漏问题的发生。11. 双链表相较于单链表需要额外存储指向前一个节点的指针,因此会在空间上占用更多的内存。7. 双链表的每个节点包含三个部分:数据域、指向前一个节点的指针和指向下一个节点的指针。在双链表中删除节点的操作相对比较复杂,因为我们需要维护前驱节点和后继节点之间的指针连接。在双链表中插入节点需要更新前驱节点和后继节点的指针连接,操作相对比较复杂。将 p 结点的next指针,指向q结点的后继结点。程序设计如下:注意修改指针时要注意顺序!原创 2023-11-04 09:23:43 · 3934 阅读 · 2 评论 -
单链表的建立(头插法、尾插法)(数据结构与算法)
如果要把很多个数据元素存到一个单链表中,如何操作?1.初始化一个单链表2. 每次取一个数据元素,插入到表尾/表头。原创 2023-11-03 19:35:58 · 7300 阅读 · 0 评论 -
单链表的查找(按值查找、按位查找)(数据结构与算法)
什么是单链表?单链表是一种常见的链式数据结构,用于存储和操作数据元素的集合。它由一系列的节点组成,每个节点包含两个部分:数据域和指针域。单链表的每个节点包含了存储数据的数据域,以及指向下一个节点的指针域。通过这些指针域,节点之间可以按顺序连接起来,形成一个链式结构。链表的最后一个节点通常指向一个特殊的空节点(NULL或nullptr),表示链表的结束。相比于数组,链表的一大优势是它的动态性。在链表中,节点的添加、删除可以通过修改指针的指向来完成,不需要像数组那样进行元素的移动。原创 2023-11-03 11:28:07 · 7227 阅读 · 4 评论 -
单链表的插入删除(数据结构与算法)
单链表是一种常见的线性数据结构,由一个个节点组成,每个节点包含两个部分:数据部分和指针部分。单链表的特点是每个节点只能指向下一个节点,而最后一个节点指向一个空指针。这个空指针常用来表示链表的结尾,一般命名为 nullptr。原创 2023-10-27 11:12:30 · 7561 阅读 · 4 评论 -
顺序表的查找(按位查找、按值查找)(数据结构与算法)
能够实现随机存储的基础就在于顺序表中所有的数据元素在内存里都是连续存放的,并且这些数据元素的数据类型相同,也就是说每个数据元素所占的内存空间一样大。所以我们只需要知道一个顺序表的起始地址,每个数据元素的大小,就可以立即找到第 i 个元素的位置。按值查找操作,在表L中查找具有给定关键字值的元素。GetElem(L, i) :按位查找,获取表L中第 i 个位置元素的值。如果换一个类型的指针,指向同一个地址,int *p;顺序表的按位查找---------动态分配。原创 2023-10-26 20:33:37 · 1652 阅读 · 1 评论 -
顺序表的定义与实现(数据结构与算法)
首先,需要定义一个结构体或类来表示顺序表,可以包含如下成员:- 数据区域的指针,用于存储元素的数组。- 当前顺序表的大小(元素个数)。- 当前分配的存储空间大小。- 其他辅助变量或信息。原创 2023-10-26 09:52:46 · 530 阅读 · 0 评论 -
顺序表插入和删除(数据结构与算法)
顺序表是一种数据结构,其元素在内存中连续存储,并且可以使用下标直接访问每个元素。在顺序表中插入或删除元素时,需要移动后续元素的位置以保持顺序表的有序性。对于在下标位置i处插入值为x的元素,需要将下标为i~n-1的所有元素向右移动一个位置,然后将x插入到位置i的元素中。对于删除操作,需要将下标为i+1~n-1的所有元素向左移动一个位置,然后将下标为n-1的元素置空。需要注意的是,当动态扩展顺序表时,需要重新分配内存空间,因为当前内存空间可能已经被占满了。同时,为了减少多次扩充内存空间的开销,可以考虑一次原创 2023-10-26 11:22:39 · 9400 阅读 · 0 评论 -
单链表的定义(数据结构与算法)
单链表是一种常见的数据结构,用于存储元素的序列。它由一系列节点组成,每个节点包含一个数据元素和一个指向下一个节点的引用(指针)。单链表中的节点之间通过指针连接起来,形成一个线性结构。单链表是一种简单但灵活的数据结构,常用于实现队列、堆栈和图等其他高级数据结构。原创 2023-10-26 21:18:42 · 1369 阅读 · 0 评论