数据结构
carl_2018
这个作者很懒,什么都没留下…
展开
-
【数据结构】时间复杂度和空间复杂度
1.算法 算法效率分两种:时间效率和空间效率。时间效率被称为时间复杂度,主要衡量的是一个算法的运行速度。 空间效率被称为空间复杂度,主要衡量的是一个算法所需要的额外空间。 2.时间复杂度 时间复杂度是一个函数,定量描述了该算法的的运行时间。它计算的是执行基本操作的次数。 3.时间复杂度的计算 找出执行语句的条数。如果有循环和递归,则忽略简单语句,直接算循环和递归的语句执行次数 在实际中计算时间复杂...原创 2019-01-05 14:06:22 · 200 阅读 · 0 评论 -
【数据结构】顺序表(C语言实现)
顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数据的增删查改。顺序表一般可以分为静态顺序表(使用定长数组存储)和动态顺序表(使用动态开辟的数组存储)。本次实现的是动态顺序表,具体代码如下: common.h #include <stdio.h> #include <stdlib.h> #include <asser...原创 2019-05-24 18:29:57 · 829 阅读 · 0 评论 -
【数据结构】单链表(C语言)
链表是一种在==物理存储结构上非连续、==非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。实际中链表的结构很多样化,本次实现的是无头单向非循环链表。代码如下: common.h #include <stdio.h> #include <stdlib.h> #include <assert.h> SList.h(函数声明文件) #inclu...原创 2019-05-25 18:27:45 · 410 阅读 · 0 评论 -
【数据结构】双向链表(C语言)
和单链表相比,双向链表的结构更复杂,但实现后结构会带来很多优势,反而更简单,一般用在单独存储数据。本次实现的是带头双向循环链表。 代码如下: common.h #include <stdio.h> #include <stdlib.h> #include <assert.h> List.h(函数声明文件) #pragma once #include "comm...原创 2019-05-27 16:10:23 · 186 阅读 · 0 评论 -
【数据结构】堆的实现(C语言)
树 树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。普通的二叉树是不适合用数组来存储的,因为可能会存在大量的空间浪费。而完全二叉树更适合使用顺序结构存储。现实中我们通常把堆(一种二叉树)使用顺序结构的数组来存储,需要注意的是这里的堆和操作系统虚拟进程地址空间中的堆是两回事,一个是数据结构,一个是操作系统中管理内存的一块区域分段。 堆的概念及结构 如果有一个...原创 2019-05-29 21:43:05 · 847 阅读 · 0 评论 -
【数据结构】遍历二叉树(前序、中序、后序)
二叉树链式结构的遍历 所谓遍历(Traversal)是指沿着某条搜索路线,依次对树中每个结点均做一次且仅做一次访问。访问结点所做的操作依赖于具体的应用问题。根据访问结点操作发生位置分别命名为前序/中序/后序的递归结构遍历。 NLR:前序遍历(Preorder Traversal 亦称先序遍历)——访问根结点的操作发生在遍历其左右子树之前。 LNR:中序遍历(Inorder Traversal)—...原创 2019-06-11 13:00:23 · 446 阅读 · 0 评论