数据结构
不一样的博客
这个作者很懒,什么都没留下…
展开
-
动态顺序表
简单概要: 1> 定义一个结构体,结构体存放顺序表中成员的相关信息,其中结构体中定义一个指针,指向动态开辟的空间,使用时定一个结构体变量,这个变量通过->操作解引用顺序表中的成员。 2> 初始化、删除顺序表。 3> 增删改查操作的实现。 ...原创 2018-12-05 13:45:33 · 172 阅读 · 0 评论 -
单链表(不带头、不循环)
简单概述: 1> 定义两个数据结构,第一个结构体成员为数据和指向(指向下一个结点),第二个结构体定义第一个结构的指针,指向这个链表。 2> 链表的初始化、销毁。 3> 增删改查操作。 4> 打印链表。具体...原创 2018-12-05 14:07:51 · 228 阅读 · 0 评论 -
C语言实现双向链表
实现思想: 1.定义两个结构体,一个表示链表的一个单元,另一个表示链表的头结点; 2.链表的初始化(必须让头结点的next和prev指向自己)、清除(不删除头结点)、销毁(删除头结点); 3.增操作:每次增加需要开辟一个单元,所以直接创建一个函数用来创建单元;头插、尾插、pos结点之前插; ...原创 2019-01-08 10:09:30 · 2215 阅读 · 0 评论 -
C语言实现栈和队列
一、栈(原理:FILO||LIFO) 实现思想:利用静态顺序表实现栈 1.定义结构体,包含值和数组还有栈顶成员变量记录栈内元素个数(栈主要就是对栈顶元素的操作) 2.初始化、销毁(比较简单看代码理解) 3.增操作:先判断栈是否已满,再在栈顶进行添加;(...原创 2019-01-08 10:56:47 · 3006 阅读 · 1 评论 -
时间复杂度和空间复杂度详解
一、算法效率 算法效率分析分为两种:第一中是时间效率,第二种是空间效率。时间效率被称为时间复杂度,空间效率被称为空间复杂度。时间复杂度主要衡量的是一个算法的运行速度,而空间复杂度主要衡量一个算法所需的额外空间。二、时间复杂度 简单的来说一个算法所花费的时间与其语句中的执行次数成正比,算法中的基本操作的执行次数,为算法的时间复杂度。 通常表示时间复杂...原创 2019-01-26 16:40:59 · 1898 阅读 · 0 评论 -
用数组实现堆
一、简单了解堆 如果有一个关键码的集合k = {k0,k1,k2,...,kn-1},把它的所有元素按完全二叉树的顺序存储方式存储在一个一维数组中,并满足:ki <= k21+1 且 ki <= k2i+2(ki >= k2i+1 且 ki >= k2i+2) i = 0,1,2...,则称为小堆(或大堆)。将根结点最大的堆叫做最大堆或大根堆,根结点最小的堆...原创 2019-01-26 17:10:48 · 2828 阅读 · 1 评论 -
递归与非递归实现二叉树的遍历
主要讲解二叉树的遍历问题: 前序遍历:访问根结点的操作发生在遍历其左右子树之前。 中序遍历:访问根结点的操作发生在遍历其左右子树中。 后序遍历:访问根结点的操作发生在遍历其左右子树之后。 层序遍历:设二叉树的根结点所在层数为1,层序遍历就是从所在二叉树根结点出发,首先访问第一层的树根结点,然后从左到右访问第2层上的节点,接着是第三层的节点,以此类推,...原创 2019-01-26 17:41:42 · 363 阅读 · 0 评论 -
数据结构七大排序及时间复杂度和空间复杂度的比较
1、插入排序 主要思想:从第一个元素开始往后走,只不过每次比较从后往前比较。 具体实现:记录走到的元素的值,给前面排好序的元素比较,遇见大的向后搬移,直到遇见小的,将该值放在小值的后面void InsertSort(int array[], int size){ for (int i = 0; i < size; i++){ int last ...原创 2019-04-15 22:31:08 · 2799 阅读 · 0 评论