- 博客(117)
- 资源 (7)
- 收藏
- 关注
原创 第八届“开源中国开源世界”高峰论坛自我经历
累死了,终于回来了,第一时间打开电脑,“打酱油”的我记下本次宝贵的经历。回忆起当初在优快云首页上看到了此次峰会的日期,然后就报名了,完全是抱着试试看的心态,没几天收到邮件的信息,填写个人信息然后免费的门票,有点小激动,因为免费,正符合本次回忆的主题。在参会之前,知道了在北京有个很不起眼的角落,但是创业者经常出没,你只需要花上一杯咖啡的钱---30元,就可以在此逗留一整天,这简直就是创业者
2013-06-30 17:20:59
1540
原创 第六章 数与二叉树
/* c6-1.h 二叉树的顺序存储表示 */ #define MAX_TREE_SIZE 100 /* 二叉树的最大结点数 */ typedef TElemType SqBiTree[MAX_TREE_SIZE]; /* 0号单元存储根结点 */ typedef struct { int level,order; /* 结点的层,本层序号(按满二叉树计算) */ }p
2012-12-22 13:37:07
1078
原创 5.5 广义表的存储结构
/* c5-5.h 广义表的头尾链表存储表示 */ typedef enum{ATOM,LIST}ElemTag; /* ATOM==0:原子,LIST==1:子表 */ typedef struct GLNode { ElemTag tag; /* 公共部分,用于区分原子结点和表结点 */ union /* 原子结点和表结点的联合部分 */ { A
2012-11-18 15:49:24
8920
原创 5.2 变长参数表(函数的实参个数可变)编程示例
/* algo5-2.c 变长参数表(函数的实参个数可变)编程示例 */ #include"c1.h" #include /* 实现变长参数表要包括的头文件 */ typedef int ElemType; ElemType Max(int num,...) /* ...表示变长参数表,位于形参表的最后,前面必须有至少一个固定参数 */ { /* 函数功能:返回num个数中的最
2012-11-17 12:04:00
987
原创 第五章 数组与广义表
/* c5-1.h 数组的顺序存储表示 */ #include /* 标准头文件,提供宏va_start,va_arg和va_end, */ /* 用于存取变长参数表 */ #define MAX_ARRAY_DIM 8 /* 假设数组维数的最大值为8 */ typedef struct { ElemType *base; /* 数
2012-11-12 22:01:01
810
原创 4.2.3 串的块链存储表示
串结构的特殊性------结构中的每个数据元素是一个字符,则用链表存储串值时,存在一个“结点大小”的问题,即每个结点可以存放一个字符,也可以存放多个字符。 /* c4-3.h 串的块链存储表示 */ #define CHUNK_SIZE 4 /* 可由用户定义的块大小 */ typedef struct Chunk { char ch[CHUNK_SIZE]; st
2012-11-11 13:40:27
4814
1
原创 4.2.2 堆分配存储结构
/* c4-2.h 串的堆分配存储 */ typedef struct { char *ch; /* 若是非空串,则按串长分配存储区,否则ch为NULL */ int length; /* 串长度 */ }HString;
2012-11-11 12:48:45
1055
原创 第四章 串
字符串一般简称为串。计算机上非数值处理的对象基本上是字符串数据。串(string)(或字符串)是由0个或多个字符组成的有限序列。 /* c4-1.h 串的定长顺序存储表示 */ #define MAX_STR_LEN 40 /* 用户可在255(1个字节)以内定义最大串长 */ typedef char SString[MAX_STR_LEN+1]; /* 0号单元存
2012-11-11 11:43:18
1038
原创 algo3-4-3.c 利用非循环顺序队列采用广度搜索法求解迷宫问题(一条路径)
/* algo3-11.c 利用非循环顺序队列采用广度搜索法求解迷宫问题(一条路径) */ #include"c1.h" #include"func3-1.c" #define D 8 /* 移动方向数,只能取4和8。(8个,可斜行;4个,只可直走) */ typedef struct /* 定义队列元素和栈元素为同类型的结构体 */ { PosType seat; /
2012-11-10 15:04:15
1104
原创 3.4.3 循环队列之动态存储空间 (3 )
/* c3-4.h 队列的顺序存储结构(出队元素时不移动元素,只改变队头元素的位置) */ #define QUEUE_INIT_SIZE 10 /* 队列存储空间的初始分配量 */ #define QUEUE_INCREMENT 2 /* 队列存储空间的分配增量 */ typedef struct { QElemType *base; /* 初始化的动态分配存储空间 */
2012-11-10 15:01:07
1817
原创 3.4.3 循环队列之静态存储空间(2)
在循环队列中,队尾指针可能小于队头指针。入队指针时,队尾指针加一。当队列满时,队尾指针等于对头指针,和队列空的条件是一样的。为了区分队满与队空,在循环队列中,少用一个存储单元,也就是在最大存储空间为MAX_QSIZE的循环队列中,最多只能存放MAX_QSIZE-1个元素。这样,队列空的条件任为队尾指针等于对头指针,队列满的条件改为(队尾指针+1)对MAX_QSIZE求余等于对头指针。
2012-11-07 22:27:15
2191
原创 3.4.3 循环队列--------队列的顺序表示与实现(1)
队列的顺序表示为什么要采用循环方式呢?首先分析非循环顺序队列的表示和实现以及他们存在的问题。 /* c3-5.h 队列的顺序存储结构(非循环队列,队列头元素在[0]单元) */ #define QUEUE_INIT_SIZE 10 /* 队列存储空间的初始分配量 */ #define QUEUE_INCREMENT 2 /* 队列存储空间的分配增量 */ typedef struc
2012-11-07 22:26:58
982
原创 bo3-4.c 用单链表的基本操作实现链队列(存储结构由c3-2.h定义)的基本操作(9个)
由c3-2.h和c2-2.h对比可见,单链队列和单链表结构有相同之处。单链队列是带有头结点的单链表。他的头指针相当于单链表的头指针。因此队列操作时线性表操作的子集,所以bo3-2.c中的基本操作也可以用单链表的基本操作来代替。这样既可以充分利用现有资源,减小编程工作量,又可以更清楚的看出队列和线性表的内在联系和共性。 /* bo3-6.c 用单链表的基本操作实现链队列(存储结构由c3-2.h定
2012-11-07 21:43:13
1302
1
原创 main3-4.c 检验bo3-2.c的主程序
/* main3-2.c 检验bo3-2.c的主程序 */ #include"c1.h" typedef int QElemType; #include"c3-2.h" #include"bo3-2.c" void print(QElemType i) { printf("%d ",i); } void main() { int i; Q
2012-11-07 21:26:38
738
原创 3.4 队列
和栈相反,队列(queue)是一种先进先出(FIFO)的线性表。 在队列中,允许插入的一端叫做队尾(rear),允许删除的一端叫做对头(front). 队列在程序设计中最典型的例子就是操作系统中的作业排队。在允许多道程序运行的计算机系统中,同时又几个作业运行。如果运行的结果都需要通过通道输出,那就要按请求输出的先后次序排队。 链队列-------队列的
2012-11-07 21:23:07
596
原创 algo3-3-10.c Hanoi塔问题 (没仔细看)
/* algo3-10.c Hanoi塔问题,调用算法3.5的程序 */ #include int c=0; /* 全局变量,搬动次数 */ void move(char x,int n,char z) { /* 第n个圆盘从塔座x搬到塔座z */ printf("第%i步: 将%i号盘从%c移到%c\n",++c,n,x,z); } void hanoi(int
2012-11-07 20:55:49
693
原创 algo3-3-9.c 用递归函数求解迷宫问题(求出所有解) (没仔细看了)
/* algo3-9.c 用递归函数求解迷宫问题(求出所有解) */ #include"c1.h" /* 根据《PASCAL程序设计》(郑启华编著)中的程序改编 */ #include"func3-1.c" /* 定义墙元素值为0,可通过路径为-1,通过路径为足迹 */ void Try(PosType cur,int curstep) { /* 由当前位置cur、当前步骤curs
2012-11-07 20:50:16
1738
原创 3.3 栈与递归的实现 (还没仔细看,消化)
栈还有一个重要的应用时在程序设计语言中实现递归。一个直接调用自己或者通过一系列的调用语句间接的调用自己的函数,称作递归函数。 递归是程序设计中的一个强有力的工具。其一:有许多数学函数式递归的,如f(n)=n*f(n-1)其二:有的数据结构,如二叉树,广义表等,由于结构本身固有的递归特性,则他们的操作可递归的描述;其三:还有一类问题,虽然问题本身没有明显的递归结构,单用递归求
2012-11-06 22:03:15
1126
原创 3.2.5 表达式求解
/* func3-2.c algo3-6.c和algo3-7.c要调用的函数 */ char Precede(SElemType t1,SElemType t2) { /* 根据教科书表3.1,判断t1,t2两符号的优先关系('#'用'\n'代替) */ char f; switch(t2) { case '+': case '-':if(t
2012-11-06 22:02:32
813
原创 3.2.4 迷宫求解
/* func3-1.c algo3-5.c、algo3-9.c和algo3-11.c要调用的函数、结构和全局变量 */ typedef struct { int x; /* 行值 */ int y; /* 列值 */ }PosType; /* 迷宫坐标位置类型 */ #define MAXLENGTH 25 /* 设迷宫的最大行列为25 */ typedef
2012-11-06 21:57:21
921
原创 3.2栈的应用举例----数制转换、括号匹配及行编辑
(1) 十进制转换为进制N(2~9) /* algo3-1.c 调用算法3.1的程序 */ #define N 2 /* 定义待转换的进制N(2~9) */ typedef int SElemType; /* 定义栈元素类型为整型*/ #include"c1.h" #include"c3-1.h" /* 采用顺序栈*/ #include"bo3-1.c" /* 利用顺序栈的
2012-11-06 21:13:05
1189
原创 bo3-1-1.c 链栈(存储结构由c2-2.h定义)的基本操作(4个) 及验证
/* bo3-5.c 链栈(存储结构由c2-2.h定义)的基本操作(4个) */ /* 部分基本操作是由bo2-8.cpp中的函数改名得来 */ /* 另一部分基本操作是由调用bo2-8.cpp中的函数(取特例)得来 */ typedef SElemType ElemType; /* 栈结点类型和链表结点类型一致 */ #include"c2-2.h" /* 单链表存储结构 */
2012-11-06 20:39:28
874
原创 main3-1-2.c 检验bo3-1.cpp的主程序
/* main3-1.c 检验bo3-1.cpp的主程序 */ #include"c1.h" typedef int SElemType; /* 定义栈元素类型,此句要在c3-1.h的前面 */ #include"c3-1.h" #include"bo3-1.c" void print(SElemType c) { printf("%d ",c); } in
2012-11-06 20:22:44
809
原创 3.1.2顺序栈(存储结构由c3-1.h定义)的基本操作
/* bo3-1.c 顺序栈(存储结构由c3-1.h定义)的基本操作(9个) */ void InitStack(SqStack *S) { /* 构造一个空栈S */ (*S).base=(SElemType *)malloc(STACK_INIT_SIZE*sizeof(SElemType)); if(!(*S).base) exit(OVERFLOW);
2012-11-06 20:12:48
1040
原创 第三章 栈与队列
栈与队列是两种重要的线性结构。从数据结构角度看,栈与队列也是线性表,他们是操作受限的线性表,因此,可称为是限定性的数据结构。/* c3-1.h 栈的顺序存储表示 */ #define STACK_INIT_SIZE 10 /* 存储空间初始分配量 */ #define STACK_INCREMENT 2 /* 存储空间分配增量 */ typedef struct SqSta
2012-11-03 22:47:30
430
原创 main2-4.c 检验bo2-7.c的主程序
/* main2-4.c 检验bo2-7.c的主程序 */ #include"c1.h" #include"c2-6.h" #include"bo2-7.c" iint main() { polynomial p,q; int m; printf("请输入第1个一元多项式的非零项的个数:"); scanf("%d",&m); CreatP
2012-11-03 22:46:34
1229
原创 2.4 一元多项式的表示及相加
/* c2-6.h 抽象数据类型Polynomial的实现 */ typedef struct /* 项的表示,多项式的项作为LinkList的数据元素 */ { float coef; /* 系数 */ int expn; /* 指数 */ }term,ElemType; /* 两个类型名:term用于本ADT,ElemType为LinkList的数据对象名 */
2012-11-03 22:29:57
814
原创 main2-3-4.c 检验bo2-6.c的主程序
/* main2-3-4.c 检验bo2-6.c的主程序 */ #include"c1.h" typedef int ElemType; #include"c2-5.h" #include"bo2-6.c" #include"func2-3.c" /* 包括equal()、comp()、print()、print2()和print1()函数 */ int main()
2012-11-03 22:15:42
455
原创 2.3.4 实际应用的线性链表
前面介绍的线性链表比较简单,不能满足实际的需要。存在3个问题:1、只有头指针,没有尾指针,如果在表尾插入结点,则效率低。2、求表长从表头到表尾效率也很低。3、基本操作函数较少。 c2-5.h从实际角度出发从新定义线性链表的类型。 /* c2-5.h 带头结点的线性链表类型 */ typedef struct LNode /* 结点类型,图2-40 */ {
2012-11-03 22:00:18
769
原创 main2-3-3.c 检验bo2-5.c的主程序
/* main2-3-3.c 检验bo2-5.c的主程序 */ #include"c1.h" typedef int ElemType; #include"c2-4.h" #include"bo2-5.c" #include"func2-3.c" /* 包括equal()、comp()、print()、print2()和print1()函数 */ int main()
2012-11-03 21:42:06
727
原创 2.3.3 双向链表
/* c2-4.h 线性表的双向链表存储结构 */ typedef struct DuLNode { ElemType data; struct DuLNode *prior,*next; }DuLNode,*DuLinkList; /* bo2-5.c 带头结点的双向循环链表(存储结构由c2-4.h定义)的基本操作(14个),包括算法2.18,
2012-11-03 21:30:49
652
原创 main2-3-2.c 两个仅设表尾指针的循环链表的合并(教科书图2.13)
/* algo2-10.c 两个仅设表尾指针的循环链表的合并(教科书图2.13) */ #include"c1.h" typedef int ElemType; #include"c2-2.h" #include"bo2-4.c" #include"func2-3.c" /* 包括equal()、comp()、print()、print2()和print1()函数 */ v
2012-11-03 21:12:54
2304
原创 main2-3-2.c 单循环链表
/* main2-4.c 单循环链表,检验bo2-4.c的主程序 */ #include"c1.h" typedef int ElemType; #include"c2-2.h" #include"bo2-4.c" #include"func2-3.c" /* 包括equal()、comp()、print()、print2()和print1()函数 */ int main(
2012-11-03 20:34:55
3104
原创 2.3.2 循环链表及基本操作
/* c2-2.h 线性表的单链表存储结构 */ typedef struct LNode { ElemType data; struct LNode *next; }; typedef struct LNode *LinkList; /* 另一种定义LinkList的方法 */ 最后一个结点的next域指向头结点。单循环链表往往设立尾指针而不
2012-11-03 19:58:18
660
原创 algo2-3-1.c 教科书中图2.10 静态链表示例
/* c1.h (程序名) */ #include #include #include /* malloc()等 */ #include /* INT_MAX等 */ #include /* EOF(=^Z或F6),NULL */ #include /* atoi() */ #include /* eof() */ #include /* floor(),ceil(
2012-10-28 20:54:39
726
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人