自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 收藏
  • 关注

原创 二叉搜索树-链式结构实现方式

实际上链式结构才是实现二叉树最常用的存储形式,它解决了数组存储中非常大的空间浪费,而且链式结构也非常符合二叉树的表现形式。下面是链式结构中常见的节点结构:typedef   struct  TreeNode{TREE_TYPE    value;

2010-11-30 17:26:00 878

原创 二叉搜索树-数组的实现方式

树是一种相对比较复杂的数据结构,它要么为空,要么具有一个值并具有零个或多个孩子,每个孩子本身就是树,这是一个递归的定义,二叉树是树的一种特殊形式,也是数据结构中最常用到的形式,二叉树又可以根据左右孩子节点与跟节点的大小关系分为很多种,这里以二叉搜索树为例学习,二叉搜索树有一个额外

2010-11-28 17:55:00 2496 2

原创 队列

队列的特点就不需要再多说了,用于执行元素的插入和删除的函数并没有一个被普遍认可的名字,所以我们将使用insert和delete这个两个名字,并且也没有规定插入到底是在对头还是队尾,总之就是插入和删除各在一头,但是为了现实中的队列相吻合往往比较容易记忆,所以这里同一使用在队尾插入元

2010-11-26 17:04:00 1027

原创 堆栈

基本的堆栈操作通常被称为push和pop,push就是把一个新值压入堆栈的顶部,pop就是把堆栈顶部的值移出堆栈并返回这个值,堆栈只提供对它顶部值的访问。还有另一种堆栈接口提供top操作,top操作返回顶部元素的值,但它并不把顶部元素从堆栈中移除。因此使用top操作可以反复取得栈

2010-11-25 17:51:00 1280

原创 抽象数据类型

经典的抽象数据类型包括:链表、堆栈、队列和树,这些数据结果在编程中的应用是非常广泛的,需要一项一项的学精学透。所有的抽象数据类型都必须先确定一件事情,那就是如何获取内存来存储值。有三种可选方案: 静态数组:缺点——静态数组要求结构的长度固定,而且这个长度必须在编译时确

2010-11-25 17:27:00 679

原创 使用插入排序实现qsort函数(练习)

插入排序的方法就不需要详细介绍了,这次主要使用插入排序实现C语言标准函数库中的qsort函数,函数的原型和qsort一样就是实现给定数组的排序,并且排序和数组中元素的类型无关,这样任何数组都可以使用这个排序算法,函数的原型如下:void   insertion_sort( v

2010-11-25 17:02:00 960

原创 信号

程序常常在运行时会遇到并不是因为程序运行本身所引发的事件,比如说用户突然中断了程序的运行,因此程序也不得不终止,但是有一部分已经计算好的结果不想丢弃这样就需要在程序退出时保存这些数据,因此程序必须对此类事件做出反映。虽然他并没有办法预测这种情况会在什么时候发生。      信

2010-11-24 14:42:00 413

原创 输入输出函数

在系统学习输入输出函数之前,首先了解一个 stdio.h 头文件。头文件stdio.h包含了标准库函数的I/O部分的声明流的概念:就C语言而言,所有的I/O操作只是简单的从程序中移进移出字节的事情,因此这种字节流杯称为流,程序只需关心创建正确的输出字节数据,以及正确的解释

2010-11-15 17:43:00 1114

原创 预处理器--宏(练习)

1、编写一个用于调试的宏,打印出任意的表达式,它被调用时应该接受两个参数。第一个是printf格式码,第二个是需要打印的表达式。下面的宏在此基础上做了一下扩充(同时打印出文件名和行号):      #define    DEBUG_PRINT(fmt,value)

2010-11-14 18:49:00 389

原创 宏与函数

宏与函数的一些优劣一般宏用于执行简单的运算,例如:#define   MAX(a,b)       ((a) > (b) ? (a) : (b))这种情况下使用宏比使用函数要好,原因有两点:1、调用函数要消耗系统一定的额外时间,执行额外的代码(保护处理器现场、数据

2010-11-14 15:40:00 524

原创 预处理器(#define)

#define宏的一些用法      首先让我们来查看这个预处理指令更为正式的描述:     #define  name  stuff     有了这条指令以后,每当有符号 name出现在这条指令的后面时,预处理器就会把它替换成stuff。     我们常常使

2010-11-12 17:55:00 926

原创 利用转换表判断字符的类型(练习)

题目:编写一个程序,从标准输入读取一些字符,并根据字符的分类计算各类字符的百分比。 要求:不能使用一系列的if语句,字符判断可以使用ctype.h头文件中定义的函数。 代码#include #include #include /*各种判断字符类型的函数均

2010-11-12 11:41:00 548

原创 命令行参数及字符串常量

命令行参数是C语言中指向指针的指针的另一个用武之地,很多的操作系统都允许用户在命令行中编写参数来启动一个应用程序的执行,这些参数被传递给程序,程序按照他认为合适的任何方式对它们进行处理。      我们首先来研究一下C语言中main函数的参数,main函数有两个参数,argc

2010-11-11 18:28:00 790

原创 函数指针应用

通过上一节对复杂声明的分析接触到了函数指针这个东西,实际上函数指针和其他的指针一样,在使用时也是要先进行初始化的,函数指针的初始化方法例如下:        int   f( int value );        int    (*pf)( int va ) =

2010-11-10 17:46:00 447 1

原创 C语言中的复杂声明

在C语言的高级指针中会使用到一些比较复杂的声明,因此理解C语言中的声明的含义很重要,这里有一个诀窍,所有C语言中的声明都可以使用求值的方式一层一层的来分析,把声明当作一个表达式对其进行求值,首先分析一个简单的例子来练一练手:     int  *f();

2010-11-10 17:08:00 436

原创 动态内存分配

关于malloc和free      这两个函数共同维护一个可用内存池,当一个程序需要一些内存空间时就调用malloc函数,这个函数就从内存块中提取一块儿合适的内存,并向调用程序返回一个指向该块内存的指针,注意,这个被分配的内存空间并没有以任何方式对其进行初始化,因此如果需要

2010-11-09 17:47:00 342

原创 C语言中的结构

1、C语言中的结构与数组的区别,首先它们的相同点是都是聚合数据类型都可以同时存储超过一个的单独数据,但是他们之间的区别却是非常重要的:结构不可以像数组那样使用下标或指针来间接访问它的每一个元素;数组中的元素之所以可以使用下标来访问是因为它的每一个元素的长度都相同,但是结构的每

2010-11-01 17:17:00 400

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除