
数据结构与算法
文章平均质量分 68
Michael_chemic
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
循环队列(Circular Queue)
/ 队列的顺序存储结构(循环队列) # define MAX_QSIZE 5 // 最大队列长度+1 typedef struct {// 初始化的动态分配存储空间 int front;// 头指针,若队列不空,指向队列头元素 int rear;// 尾指针,若队列不空,指向队列尾元素的下一个位置 } SqQueue;// 构造一个空队列Q SqQueue * Q_Init() {// 存储分配失败 if(!Q) {// 存储分配失败 if(!return Q;原创 2022-11-16 17:08:17 · 3821 阅读 · 0 评论 -
队列存储结构
通过学习链式队列最基本的数据入队和出队操作,我们可以就实际问题,对以上代码做适当的修改。前面在学习顺序队列时,由于顺序表的局限性,我们在顺序队列中实现数据入队和出队的基础上,又对实现代码做了改进,令其能够充分利用数组中的空间。链式队列就不需要考虑空间利用的问题,因为链式队列本身就是实时申请空间。因此,这可以算作是链式队列相比顺序队列的一个优势。# include # include //链表中的节点结构 typedef struct qnode {原创 2022-11-07 12:34:16 · 1301 阅读 · 0 评论 -
栈和栈链结构详解
链栈的实现思路和顺序栈类似,顺序栈是将顺序表(数组)的一端做栈底,另一端做栈顶;链栈也是如此,我们通常将链表的头部做栈顶,尾部做栈底。有元素入栈时,只需要将其插入到链表的头部;有元素出栈时,只需要从链表的头部依次摘取结点。转载 2022-11-06 21:05:10 · 268 阅读 · 0 评论 -
C语言顺序表
5提示: inta=(int)malloc(n表示定义一个int类型的指针变量a,并申请nsizeof(int)个字节(即4*n个字节)的存储空间。原创 2022-11-06 19:47:24 · 201 阅读 · 0 评论 -
数据结构与算法: 选择排序selection sort
选择排序selection sortC:void swap(int *a,int *b) //交换指针指向的函数{ int temp = *a; *a = *b; *b = temp;}void selection_sort (int arr[], int len){ int i,j; for (i = 0 ; i < len - 1 ; i++) { int min = i;原创 2022-04-18 21:29:29 · 119 阅读 · 0 评论 -
数据结构与算法: 冒泡排序Bubble Sort
通过指针,数组,函数利用冒泡排序,实现整型数组的升序排列。原理:#include <iostream>using namespace std;void bublesort(int* arr, int len) { int i, j, tmp; for (i = 0; i < len; i++) { for (j = 0; j < len - 1; j++) { if (arr[j] > arr原创 2022-04-03 16:33:19 · 1057 阅读 · 0 评论 -
数据结构与算法: 图的顺序表示(邻接矩阵)和链表表示(邻接列表表示)
图可以将图定义为用于连接这些顶点的顶点和边组。图可以看作是一个循环树,其中顶点(节点)在它们之间保持任何复杂的关系,而不是具有父子关系。图的定义图 G 可以定义为有序集 G(V, E),其中 V(G) 表示顶点集,E(G) 表示用于连接这些顶点的边集。具有 5 个顶点(A、B、C、D、E)和 6 条边((A,B)、(B、C、C)、(C、E、D、B)、(D、A))的图形 G(V、E)、(D、B)、(D、A))如下图所示。有向图(Directed)和无向图(Undirected)图 可以是有向的,原创 2022-04-14 13:34:26 · 3153 阅读 · 0 评论 -
数据结构与算法: 树数据结构
树数据结构我们读取线性数据结构,如数组,链表,堆栈和队列,其中所有元素都按顺序排列。不同的数据结构用于不同类型的数据。在选择数据结构时会考虑一些因素:需要存储什么类型的数据?某种数据结构可能最适合某种数据。运营成本:如果我们要最小化最常执行的操作的操作成本。例如,我们有一个简单的列表,我们必须在其上执行搜索操作;然后,我们可以创建一个数组,其中元素按排序顺序存储以执行二进制搜索。二进制搜索对于简单列表非常快速,因为它将搜索空间分成两半。内存使用情况:有时,我们想要一个使用更少内存的数据结构。原创 2022-04-14 09:52:58 · 1041 阅读 · 0 评论 -
数据结构与算法: 队列Queue
原创 2022-04-13 08:54:54 · 764 阅读 · 0 评论 -
数据结构与算法: 初识“栈“
栈Stack:只允许在一端进行插入或删除操作的线性表堆栈是遵循后进先出(后进先出)原则的线性数据结构。堆栈有一端,而队列有两端(前部和后部)。它只包含一个指针顶部指针,指向堆栈的最顶层元素。每当在堆栈中添加元素时,都会将其添加到堆栈的顶部,并且只能从堆栈中删除该元素。换句话说,堆栈可以定义为一个容器,其中可以从称为堆栈顶部的一端进行插入和删除。之所以被称为堆栈,因为它的行为类似于现实世界的堆栈,成堆的书籍等。Stack 是一种具有预定义容量的抽象数据类型(ADT),这意味着它可以存储有限大小的元素。原创 2022-04-12 13:29:44 · 594 阅读 · 0 评论 -
数据结构与算法: 链表
使用数组包含以下限制:线性表(数组):可以随机存储,存储密度高.但是要求连续空间,改变容量不方便.在程序中使用之前,必须事先知道数组的大小。增加阵列的大小是一个耗时的过程。在运行时扩展数组的大小几乎是不可能的。数组中的所有元素都需要连续存储在内存中。在数组中插入任何元素都需要移动其所有前置元素。链表是可以克服数组的所有限制的数据结构。使用链表很有用,因为,它动态分配内存。链表的所有节点都非连续地存储在内存中,并在指针的帮助下链接在一起。大小不再是问题,因为我们不需要在声明时定义其大小。列表根据程原创 2022-04-12 12:59:35 · 892 阅读 · 0 评论 -
数据结构与算法: 指针和结构体
指针指针用于指向存储在计算机内存中任何位置的值的地址。获取存储在该位置的值称为取消引用指针。指针提高了重复过程的性能.遍历字符串查阅表格控制表树结构指针的运用指针算术:有四种算术运算符可用于指针:++、–, +、-指针数组:您可以定义数组来保存多个指针。指针指向指针:C 允许您在指针上放置指针,依此类推。将指针传递到 C 中的函数:通过引用或地址传递参数使被调用函数能够在调用函数中更改传递的参数。从 C 中的函数返回指针:C 还允许函数返回指向局部变量、静态变量和动态分配内存的指原创 2022-04-11 22:30:41 · 489 阅读 · 0 评论 -
数据结构与算法: Asymptotic Analysis 渐近分析
Asymptotic Analysis 渐近分析渐近分析是一种描述函数在极限附近的行为的方法。渐近分析方法在多个科学领域得到应用。在统计,渐近理论提供限制的近似概率分布的样本统计,如似然比统计量和所述期望值中的偏差。渐近分析也是探索现实世界现象的数学建模中出现的常微分方程和偏微分方程的关键工具。在计算机科学中,算法分析考虑给定算法在输入非常大的数据集时候的性能。当实体系统的规模变得非常大的时候,分析它的行为。e.g.:渐近符号以下是常用的渐近符号来计算算法的运行时间复杂度。Ο表示法Ω表示原创 2022-04-11 11:24:14 · 1322 阅读 · 0 评论 -
数据结构与算法: 基础知识
数据结构栈(Stack):栈是一种特殊的线性表,它只能在一个表的一个固定端进行数据结点的插入和删除操作。队列(Queue):队列和栈类似,也是一种特殊的线性表。和栈不同的是,队列只允许在表的一端进行插入操作,而在另一端进行删除操作。数组(Array):数组是一种聚合数据类型,它是将具有相同类型的若干变量有序地组织在一起的集合。链表(Linked List):链表是一种数据元素按照链式存储结构进行存储的数据结构,这种存储结构具有在物理上存在非连续的特点。树(Tree):树是典型的非线性结构,它是包原创 2022-04-11 10:48:22 · 2173 阅读 · 0 评论