数据压缩的重要组成部分---位操作

数据压缩描述 数据压缩是一个减少数据存储空间的过程。 数据压缩包括两个过程:一个过程是,压缩或编码数据,数据大小减小;另一个过程是,解压缩或解码数据,还原到数据本身的状态。 根据信息的内容,所有的数据都会表现出一定的特性,称为熵(从热力学借用的一个术语)。压缩是可能的,因为绝大多数数据所表现出来的容 ... »

使用“牛顿迭代法”求解方程

使用牛顿迭代法求解方程 尽管通过因式分解和利用求根公式可以很方便的得出多项式方程的根,但大多数时候这个多项式的次数都很高,计算将变得非常复杂,因此,我们必须转向一些近似解法。 牛顿迭代法是其中最好的方法之一。从根本上说,牛顿迭代法通过一系列的迭代操作使得到的结果不断逼近方程的实根。 首先,要选择一个 ... »

考研王道数据结构-顺序表(综合应用2)

本节代码主要来自王道单科18页的综合应用题。 四、从有序顺序表中删除其值在给定值s与t之间(要求s<t)的所有元素。如果s与t不合理或者顺序表为空则显示出错信息并退出运行 找到第一个比s大的元素的位置。(和下面那道题的区别就是是否有序) 核心代码: 也可以不用count统计个数,不用新定义k来遍历。 ... »

考研王道数据结构-顺序表(综合应用1)

本节代码主要来自王道单科18页的综合应用题。 二、18页第2题。设计一个高效的算法,将顺序表的所有元素逆置,要求算法的空间复杂度为O(1) 核心代码: 可以有两种方式: 第一种:定义两个循环指针i,j,其中i向后遍历,j向前遍历,这种更好记忆。 第二种:j没有定义出来,用i和L.length(即L. ... »

二分查找算法实现(图解)与实例

现在我们来玩一个猜数的游戏,假设有一个人要我们猜0-99之间的一个数。那么最好的方法就是从0-99的中间数49开始猜。如果要猜的数小于49,就猜24(0-48的中间数);如果要猜的数大于49,就猜74(50-99的中间数)。重复这个过程来缩小猜测的范围,直到猜出正确的数字。二分查找的工作方法类似于此 ... »

排序算法的C语言实现(下 线性时间排序:计数排序与基数排序)

计数排序 计数排序是一种高效的线性排序。 它通过计算一个集合中元素出现的次数来确定集合如何排序。不同于插入排序、快速排序等基于元素比较的排序,计数排序是不需要进行元素比较的,而且它的运行效率要比效率为O(nlgn)的比较排序高。 计数排序有一定的局限性,其中最大的局限就是它只能用于整型或那么可以用整 ... »

C语言多维数组的指针传递

在C语言中为了节省空间,提高运行速度经常使用指针来完成数组的传递。 对于一维数组而言可以直接传递首地址 而对于二维数组必须在传递时声明是二维数组的指针,并且调用时也要经过一些运算 首先是定义形参: 函数名(int *arg) 向这个形参传递实参: 函数名(&data[0][0]) 取出i行j列的一个 ... »

排序算法的C语言实现(上 比较类排序:插入排序、快速排序与归并排序)

总述:排序是指将元素集合按规定的顺序排列。通常有两种排序方法:升序排列和降序排列。例如,如整数集{6,8,9,5}进行升序排列,结果为{5,6,8,9},对其进行降序排列结果为{9,8,6,5}。虽然排序的显著目的是排列数据以显示它,但它往往可以用来解决其他的问题,特别是作为某些成型算法的一部分。 ... »

C语言 时间函数的学习

一直都是以简单的time_t t,time(&t),ctime(&t)来表示时间,后来要以时间为日志文件的名字时,就有点蒙逼了。学习一下。 获取当地时间的函数 :struct tm localtime(const time_t timep); 获得格林威治时间的函数:struct tm gmtime ... »

广度优先(bfs)和深度优先搜索(dfs)的应用实例

广度优先搜索应用举例:计算网络跳数 图结构在解决许多网络相关的问题时直到了重要的作用。 比如,用来确定在互联网中从一个结点到另一个结点(一个网络到其他网络的网关)的最佳路径。一种建模方法是采用无向图,其中顶点表示网络结点,边代表结点之间的联接。使用这种模型,可以采用广度优先搜索来帮助确定结点间的最小 ... »

顺序栈的实现

顺序栈的实现 今天复习了一下数据结构; 自己用c语言数组又重新实现了一遍; 可以操作的哦; 手动分割 栈是仅限定在表位进行插入和删除的线性表。 因此,对栈来说,表尾端有其特殊含义,称为栈顶,相应的表头端称为栈底。不含元素的空表称为空栈。 假设栈S=(a1,a2,...,an),则称a1为栈底元素,a ... »

数据结构 图的定义和搜索方法(清晰图解)

在计算机科学领域中,图是最为灵活的数据结构之一。 一般来说,图在定义对象之间的关系或联系这类问题上能够作为一种模型来帮助我们。 图中的对象可以是具体的,比如网络中的结点;也可以是不具体的,比如数据库中的业务或系统中的状态。相同点是对象之间的关系和联系。网络上的结点是物理上相连接的,系统中状态之间的关 ... »

USB Audio设计与实现

1 前言 本文将基于STM32F4 Discovery板,从零开始设计并实现一个USB Audio的例子。 2 设计构思 所谓的USB AUDIO就是制作一个盒子,这个盒子可以通过USB连接到PC,PC端将其识别为Audio设备,然后在PC端播放音乐的时候,声音可以通过盒子播放出来。 2.1 从原理 ... »

数据结构-优先队列 接口定义与实现分析

顾名思义,优先队列将数据按优先级顺序排列。一个优先队列由许多有序的元素构成,优先级最高的元素可以有效而快速的确定。 例如,用来做负载均衡的服务器,当连接请求到达时,优先队列可以告知当前哪台服务器是处理此连接请求最佳的服务器。一般情况下,最空闲的服务器获取的优先级最高,因为它可以最好地处理服务请求。 ... »

STM32F10x的启动汇编分析

;******************** (C) COPYRIGHT 2009 STMicroelectronics ********************;* File Name : startup_stm32f10x_cl.s;* Author : MCD Application Team; ... »

二叉搜索树的实现源码(源码较长,请慎入)

实现二叉搜索树的一种好方法是利用二叉树抽象数据类型。 我们以BisTree这个名称来代表二叉搜索树这种数据结构。通过typedef方式将BisTree(二叉搜索树)实现为BiTree(二叉树)的别名。 采用typedef方法使得二叉搜索树具有了某种程度的多态能力,如同栈和队列一样。这意味着除了专属于 ... »