数据结构与算法
文章平均质量分 80
little_Kang
CS专业代码搬运工
展开
-
数据结构与算法——线性表链式存储(双向循环链表)
今天总结线性表中的双向循环链表。什么是双向循环链表? 看名字估计也就知道了,首相他是一个循环链表,也就是最后一个结点的指针域不为空,而是指向头结点,其次与单向循环链表相比,它是双向的。所谓双向,就是给每个结点再增加一个指针域,这个指针域指向前一个结点。 即是下面这样(来自百度图片):为什么要用双向循环链表? 无论单链表还是单向循环链表,都只有一个指针域,它们都是直原创 2015-05-09 08:53:48 · 959 阅读 · 0 评论 -
数据结构与算法——直接插入排序
好久没写博客了,今天就简单总结下直接插入排序。什么是直接插入排序?直接插入排序就是将某一个元素与顺序表中元素进行比较,然后插入到相应的位置,使整个顺序表处于有序状态。有关数据结构的书上都会用扑克牌进行比喻说明,就跟玩扑克一样,当我们拿到几张牌时,要想整理成一个顺子,我们通常的做法就是将小的牌,插到比他大的牌的前面。具体可以看看书,想一想,还是很容易理解的。直接插入排序的思路:每次将一个原创 2015-06-11 16:59:39 · 3758 阅读 · 0 评论 -
数据结构与算法——线性表顺序存储结构
今天总结一下数据结构中的线性表中的顺序存储结构,这是一种比较简单的结构。 首先,看一下什么是线性表。 什么是线性表? 线性表是一种简单的数据结构,数据元素之间是一对一的关系,即除了第一个和最后一个元素外其余元素都是首尾相接的。元素的个数称为线性表的长度,长度为零则表示线性表为空。 什么是线性表的循序存储结构? 线性表中的顺序存储结构就是把线性表中的元素按逻辑次原创 2015-05-05 10:27:53 · 1096 阅读 · 0 评论 -
数据结构与算法——二叉树的创建与遍历
这两天在看树的部分,先总结一下二叉树。什么是树?树也是一种数据结构,是由n个结点组成的具有层次关系的集合。树由根结点和子节点组成,与现实生活中的树不同,这里的树,根结点是在最上面的,叶子结点在下面,就像是将现实中的树倒着挂起来一样。树的特点:每个结点有零个或多个子结点。每一个子结点只有一个父结点。没有前驱的结点称为根结点,没有子结点的结点为叶子结点。除根结点外,每个子结点可原创 2015-05-23 13:33:45 · 4995 阅读 · 1 评论 -
数据结构与算法——线性表链式存储(单循环链表)
今天总结循环单链表什么是单循环链表?单链表终端结点的指针域是指向空的,如果将其指向头结点,这样就形成了一个环,那么这种首尾相接的环就够成了单循环链表.单链表中我们都是用头指针来表示的,但是在单循环链表里,用尾指针(指向最后一个节点)。为什么要这样,因为如果用头指针,那么当查找最后一个元素的时候,就要循环遍历,时间复杂度为O(n),如果用尾指针,时间复杂度为O(1),而因为是循环的,所以原创 2015-05-07 11:04:12 · 3248 阅读 · 0 评论 -
数据结构与算法——链队列
总结链队列什么是链队? 队列的链式存储结构称为链队列。链队也有两个指针,队头指针和队尾指针,这样队头删除和队尾插入操作就会很方便,链式队列一般像单链表一样,有一个头结点。图示:具体实现:#include using namespace std;template struct Node { T data; struct Node *nex原创 2015-05-16 10:31:54 · 1049 阅读 · 0 评论 -
数据结构与算法——循环队列
今天总结循环队列。什么是队列? 队列跟栈差不多,也是一种操作受限的线性表,只允许在线性表的一端进行插入操作,在另一端进行删除操作。插入的一端称为队尾,删除的一端称为队头,插入操作称为入队,而删除操作称作出出队,不含任何数据元素的队称为空队。队列也有两种实现方式,一种就是顺序存储,用数组实现,另一种是采用链表形式。今天总结顺序存储的循环队列。什么是循环队列? 循环队列就是,当原创 2015-05-14 21:43:49 · 1576 阅读 · 0 评论 -
数据结构与算法——线性表链式存储(单链表)
今天总结单链表的实现.什么是链表? 就是采去链式存储结构的线性表,所谓链式存储就好比火车的车厢一样,一节一节的连接起来,成为一个线性表。这种方式采用动态存储分配方式,即程序在运行时根据实际需要申请内存空间,不需要时将内存空间释放掉。 链表用一组任意的存储单元存放线性表中的各个元素,这组存储单元可以是连续的,也可以是不连续的。什么是单链表?单链表简单理解就是单向的,就像火原创 2015-05-06 10:55:36 · 745 阅读 · 0 评论 -
数据结构与算法——链栈
今天总结链栈。什么是链栈?链栈就是栈的链式存储结构,就跟单链表差不多。只不过头指针变成了栈顶指针,这个指针总是指向栈顶元素。栈底结点的指针域指向NULL,当top==NULL时,则栈为空.具体实现时,对比着单链表,然后结合图示,很容易就写出来了。图示:实现:#include using namespace std;template struct Node {原创 2015-05-12 21:41:42 · 807 阅读 · 0 评论 -
数据结构与算法——顺序栈
今天总结栈的顺序存储结构什么是栈?栈是一种线性表,其特点是限定尽在表尾进行插入和删除操作,表尾栈一段也叫栈顶,另一端就是栈底了。既然栈是线性表,那么栈也就有两种存储数据的方式,顺序存储和链式存储。今天实现的是顺序存储的栈,也就顺序栈。图示(来自百度图片):顺序栈的实现:栈的顺序存储还是比较简单的,就是对数组进行操作。#include using name原创 2015-05-11 17:24:48 · 1602 阅读 · 2 评论 -
数据结构与算法——线性表链式存储结构(静态链表)
今天总结静态链表.什么是静态链表?我理解静态链表是一种伪链表,因为它没有使用指针。静态链表使用数组实现的,这个数组是一个结构体数组,结构体由数据域和指针域构成,与单链表不同的是,这个指针域并不是指针,而是一个整数,用来指向下一个结点(数组下标)。静态链表中实际上相当于有两个链表,一个时实际数据所构成的一个链表,另一个是数组中空元素所构成的链表,称为空闲链表或备用链表,用来存放插入进来的原创 2015-05-10 15:08:44 · 911 阅读 · 0 评论 -
数据结构与算法——冒泡排序
什么是冒泡排序? 冒泡排序是一种交换排序,所谓交换,就是将相邻元素两两比较,如果反序则进行交换从而使元素有序。之所以叫冒泡排序是因为,元素是从最后开始进行两两比较,将小的元素放到最上面的位置,看上去就跟气泡网上冒一样。代码实现:#include #define MAXSIZE 10using namespace std;struct SqList { int r[MAX原创 2015-06-14 20:35:23 · 804 阅读 · 0 评论