数据结构
123没有肆
这个作者很懒,什么都没留下…
展开
-
栈和队列的常见题目
栈和程序运行时的栈区有什么区别?内存中的栈区实际上类似于数据结构中的栈。两者区别的是数据结构中的栈是解决为程序开发而设计的算法问题,而在内存中的栈区是解决内存分配的问题。不过,它们俩相同点就是遵守先进后出的规则。为什么将递归程序转化成循环时需要用到栈?用栈保存未完成的工作,在适当的时候从栈中取出并执行。 系统保存了工作的数据和状态,数据就是函数的局部变量, 状态就是程序指针。如果你采用递归...原创 2019-09-11 19:16:42 · 681 阅读 · 0 评论 -
顺序表链表对比
顺序表存储(典型的数组)原理:顺序表存储是将数据元素放到一块连续的内存存储空间,相邻数据元素的存放地址也相邻(逻辑与物理统一)。优点:1.空间利用率高。(局部性原理,连续存放,命中率高)2.支持随机访问,存取速度高效,通过下标来直接存储。3.顺序表的缓存利用率比较高缺点:1.插入和删除比较慢,比如:插入或者删除一个元素时,整个表需要遍历移动元素来重新排一次顺序。2.不可以增长长度...原创 2019-09-10 11:39:33 · 473 阅读 · 1 评论 -
链式二叉树
顺序存储结构和链式存储结构的优缺点比较,以及使用情况。优缺点顺序存储时,相邻数据元素的存放地址也相邻(逻辑与物理统一);要求内存中可用存储单元的地址必须是连续的。优点:存储空间利用率高。缺点:插入或删除元素时不方便。链式存储时,相邻数据元素可随意存放,但所占存储空间分两部分,一部分存放结点值,另一部分存放表示结点间关系的指针优点:插入或删除元素时很方便,使用灵活。缺点:存储空间利用率低。...原创 2019-06-19 19:11:24 · 393 阅读 · 0 评论 -
二叉树排序总结
//快速排序,去基准值,左同时向中间靠拢//左边遇到大的停止,右边遇到小的停止//交换大小数的位置,两个指针到同一位置时,与基准值交换//最终结果是小…基准值…大#include <stdio.h>#include <stdlib.h>//基准值的取法随意时,容易造成时间复杂度很高的情况//三数取中法:取三个数,左端右端,中间,选择大小处于中间的数作为基准值...原创 2019-06-12 14:17:01 · 287 阅读 · 0 评论 -
数据结构---队列及相关操作(重点)
队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出 FIFO(First In First Out)入队列:进行插入操作的一端称为队尾出队列:进行删除操作的一端称为队头链式结构实现队列主要用到链表里的尾插和头删队列的初始化//队列的初始化void QueueInit(Queue* q){ assert(q); q->_front...原创 2019-05-22 11:46:25 · 210 阅读 · 0 评论 -
数据结构---栈(重点)
栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端 称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。出栈:栈的删除操作叫做出栈。出数据也在栈顶。栈的相关操作栈的初始化//栈的初始化void StackInit(Stack* ps)...原创 2019-05-22 00:43:35 · 215 阅读 · 0 评论 -
堆及堆的相关操作总结
二叉树的顺序存储-----堆堆:是一棵完全二叉树,对症的元素存储到一维数组中,对任意节点,若果该节点小于(大于)其左右孩子的话,这种类型的结构成为小堆(大堆).堆的特性:1.堆顶元素一定是这个堆中最大(最小的)的2.堆序:从堆顶位置沿着某一条路径向下走走到叶子结点,所有经过的节点都是有序的(升序或降序)堆的创建的时间复杂度为O(N*log2(N)) ,N为节点个数堆的创建以及相关操...原创 2019-05-25 18:11:00 · 268 阅读 · 0 评论 -
二叉树知识点总结
树树树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。特点:每个结点有零个或多 个子结点;没有父结点的结点称为根结点;每一个非根结点有且只有一个父结点;除了根结点外,每个子结 点可以分为多个不相交的子树 。相关概念:节点的度:一个节点含有的子树的个数称为该节点的度;叶节点或终端节点:度为0的节点称为叶节点;非终端节点或分支节点:度不为0的节点;...原创 2019-05-24 20:53:23 · 3192 阅读 · 0 评论 -
数据结构---顺序表(重点)
顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组 上完成数据的增删查改。顺序表一般可以分为:1.静态顺序表:使用定长数组存储。2.动态顺序表:使用动态开辟的数组存储// 顺序表的静态存储 #define N 100 typedef int SLDataType;typedef struct SeqList { SLDataType ar...原创 2019-05-21 00:09:04 · 338 阅读 · 0 评论 -
数据结构问题总结1
1. 如何衡量一个算法的好坏?衡量一个算法的好坏可以通过算法效率来判断,算法效率又分为空间效率和时间效率,也就是空间复杂度和时间复杂度,时间复杂度主要衡量算法的运行速度,而空间复杂度衡量一个算法所需要的额外空间.2. 什么是时间复杂度?什么是时间复杂度,算法中某个函数有n次基本操作重复执行,用T(n)表示,现在有某个辅助函数f(n),使得当n趋近于无穷大时,T(n)/f(n)的极限值为不等于...原创 2019-05-10 17:39:22 · 192 阅读 · 0 评论 -
数据结构---链表(重点)
链表的节点1–>2–>3–>NULLNode*first =0xCC; //0xCC为第一个结点的地址结点地址{value,next}0xCC{1,0xFF}0xFF{2,0x44}0x44{3,NULL}typedef struct Node{ int value; struct Node *next;//保存着下一个结点的地址,找到最后一个为NULL时结...原创 2019-05-14 11:15:48 · 197 阅读 · 0 评论