• 欢迎访问BruceOu的博客,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏本章吧

标签:数据结构与算法

《数据结构与算法》第10章 排序(C语言)

排序(Sort)是将无序的记录序列(或称文件)调整成有序的序列。 10.1排序分类 按照排序的稳定性可以将排序分为稳定排序和非稳定排序。按照排序的存储可分为内排序和外排序。 1、稳定排序和非稳定排序 设待排文件f = (R1 R2 ……….. Rn)相应的 key 集合为k = {k1 k2 …R……

《数据结构与算法》第9章 查找 (C语言)

所谓“查找”记为在一个含有众多的数据元素(或记录)的查找表中找出某个“特定的”数据,即在给定信息集上寻找特定信息元素的过程。 为了便于讨论,必须给出这个“特定的”词的确切含义。首先,引入一个“关键字”的概念;关键字(Key)是数据元素(或记录)中某个数据项的值,用它可以标识(识别)一个数据元素(或记录); 查找(Serching)根据给定的某个值,在查找表……

《数据结构与算法》第8章 树 (C语言)

8.1树的概念 树(tree)是n(n>=0)个节点的有限集合T,它满足两个条件: 1)有且仅有一个特定的称为根(root)的节点; 2)其余的节点可以分为m(m>=0)个互不相交的有限结合T1、T2、…、Tm,其中每一个集合又是一棵树,并成为其根的子数(Subtree)。 树的逻辑结构:树中任何节点都可以有零个或多个直接后继节点(子节点),……

《数据结构与算法》第7章 两个队列实现一个栈 (C语言)

前一节我们讲解了两个栈实现一个队列,现在我们用两个队列实现一个栈。 关于栈和队列的特点在前一节我们已经讲解过了,现在我们直接看用两个队列实现栈的出入。 7.1入栈 入栈很简单,只需要将队列q1入栈即可。 int PushStack(sequeue_t *queue1, data_t data) { if(queue1 == NULL) {……

《数据结构与算法》第6章 两个栈实现队列 (C语言)

在讲解本节内容之前,我们先来回顾栈和队列的特点。 栈的特点是先进后出,例如,把序列1,2,3,4,存入栈中。 入栈:1先入,4最后入,最终1在栈底,而4位于栈顶。 出栈:栈顶先出,最后栈底元素出栈。 队列的特点是先进先出,例如,把序列1,2,3,4,存入队列中。 入队:1先入,4最后入,最终1在队首,而4位于队尾。 出队:队首先出,最后队尾元素出队列。 ……

《数据结构与算法》第5章 链表反转【有头结点】(C语言)

5 链表反转【有头结点】 此文是在前一文的基础上改进,两者区别在于是否有头结点,为何必须有头结点,笔者在《表》那一章已经说明了,此文是在上一节进行了改进。 【题目描述】 题目:输入一个链表的头结点,反转该链表,并返回反转后链表的头结点。 typedef int data_t; typedef struct linklist_node_t { da……

《数据结构与算法》第5章 链表反转【无头结点】(C语言)

5 链表反转【无头结点】 【题目描述】 题目:输入一个链表的头结点,反转该链表,并返回反转后链表的头结点。 typedef int data_t; typedef struct linklist_node_t { data_t data; struct linklist_node_t *next; }linklist_t; 【分析与解法……

《数据结构与算法》第4章 队列(C语言)

4.1队列的概述 队列(queue)是一种先进先出(First In First Out , FIFO)的线性表,它只允许在表的一端插入元素,另一端删除元素。其中,允许插入的一端称为队尾(rear),允许删除的一端称为对头(front)。 和栈一样,也是一种对数据的”存”和”取”有严格要求的线性存储结构。 与……

《数据结构与算法》第3章 栈(C语言)

3.1 栈的概述 同顺序表和链表一样,栈也是用来存储逻辑关系为 “一对一” 数据的线性存储结构。 栈存储结构与之前所学的线性存储结构有所差异,这缘于栈对数据 “存” 和 “取” 的过程有特殊的要求: 1.栈只能从表的一端存取数据,另一端是封闭的; 2.在栈中,无论是存数据还是取数据,……

《数据结构与算法》第2章 表(C语言)

2.1线性表概述 表也可以说是线性表,名为线性存储结构。使用线性表存储数据的方式可以这样理解,即“把所有数据用一根线儿串起来,再存储到物理空间中”。 如上图所示,这是一组具有“一对一”关系的数据,我们接下来采用线性表将其储存到物理空间中。 首先,用“一根线儿”把它们按照顺序“串”起来,如下图所示: 上图中,左侧是“串”起来的数据,右侧是空闲的物理空间。……