自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

让阳光照进心里

学习感悟+生活随笔

  • 博客(40)
  • 资源 (2)
  • 收藏
  • 关注

原创 字谜游戏(b)C语言

  这个版本出炉比较快,还yeah乎着呢,呵呵.  思想,就是,记录下单词的所有前缀,这样可以减少扫描次数.  我的实现方式,新建一个文件存放所有单词的所有前缀,之后同单词一起装进表中.添加一个指示域来指示表中的字符串是单词还是前缀.之后在主循环中先进行单词判断,而后进行前缀判断.如果当前的字符串不是单词并且也未作为前缀出现在表中,那么就跳出当前方向的循环./* 5-13(b)-10-28-21.17.c -- 第五章第十三题 */#include #include #include #

2010-10-28 22:07:00 2572

原创 字谜游戏(a)C语言

  下班到家,吃了口咸菜,之后看了会书,就去睡觉了,因为太困了.(T T...真辛苦.哈哈)  0:40几分醒来了,起来写代码了..  写了个大概,一道习题的一部分,今天完成了,只不过还不够详细,今天下班回来给完善下.无奈啊,我要每天都写出点东西才安心,所以,这个不成熟的作品,也要贴出来.不过没关系,到今天晚上或者明天凌晨,我就改好了,呵呵.  这个的话,眼前通过了几个词汇量词典的测试.下班回来,重新定义一下表,完善下ADT,再模块化下,这样就放心了.  不多说,贴代码./* 5-13(a)-10-28-0

2010-10-28 04:23:00 1924 2

原创 关于Amdahl定律

  加速度S = 1 / ((1 - α(系统原来占用的时间百分比)) + α / k(当前速度 / 原来速度))  这个定律可以反应出改进系统中某个单元的执行速度(性能)将会给整个系统带来的收益.  举个例子,某个应用软件中的一个功能单元,需要占用整个系统执行时间的20%, 现在将该功能单元的执行速度提高到原来的4倍.则给该应用软件带来的 加速度S = 1 / ((1 - 0.2) + 0.2 / 4) ≈1.17.  这个定律真的可以用来确认改进一个单元给整体带来的效果.

2010-10-26 22:19:00 1173

原创 明天又要5.30起了

32 32 35828 36215 26469 44 36825 30495 26159 20010 26790 39751 46 21487 44 30524 21069 25105 26159 36825 20040 22320 26080 21147 44 22240 20026 25105 27809 26377 21035 30340 28192 36947 24471 21040 38

2010-10-24 21:27:00 1102 1

原创 两个多项式相乘后合并同类项并以指数从低到高顺序排序并打印C语言

  说成难以置信,简直难以置信.因为我这种能力的人,居然还敢说难以置信.真的难以置信.  这个东西,写了大约6小时?我本想更快的,但结构却跟我想得相差甚多.  原本以为自己的指针使用得炉火纯青了,但这么说话确实显得没什么程度.我对内存不熟悉,怎么能深刻地理解指针呢?不过我还是不担心,因为我的书就快看到内存部分了,呵呵.  我想精简操作,并没有像写ADT那样写出那么多分工那么明确的函数,而是强调快速,高效.无论是对机器,还是对我.  我的思路,比较聪明吧.因为我目前还没学很多东西,呵呵.这算是对我自己的嘲笑吗

2010-10-24 20:59:00 3429

原创 散列冲突次数测试C语言

  用来模拟使用线性探测法散列,平方探测法散列,双散列发生冲突的次数.  可指定随机序列大小,可反复生成随机序列.可指定表的大小,并可更改表的大小.方便对各种长度随机数序列,各种大小的表进行模拟测试.实现思想就是用表的指定大小创建一个数组,并将所有元素初始化为0.进行模拟时,根据随机序列中的所有数值依次计算出在表中的索引,如果表中该索引的元素为0,将该元素置为OCCUPANCY,否则冲突计数器++,并尝试下一次模拟插入.重复此过程,之后返回冲突计数器的值,释放表的空间.  代码写的比较臃肿,模块性较好.有优

2010-10-23 14:42:00 1349

原创 再散列开放定址散列表(线性探测法)加强版可再散列经优化实现文件C语言

/* open_addressing_hash_with_hashing_again.c -- 开放定址散列表线性探测法可再散列实现文件 */#include #include #include "open_addressing_hash_with_hashing_again.h"/* 局部函数声明 */static int Get_Prime_Value (const int size) ;static int Is_A_Prime (const int number) ;

2010-10-22 13:58:00 1065

原创 再散列--开放定址散列表(线性探测法)加强版可再散列经优化头文件C语言

  散列表的东西写了有4天了.从对散列表不理解,到对散列表有了个大致的理解.从对实现不理解,到对实现有了大致的理解.今天上午写了个可再散列的一套ADT,特意优化了代码,因为在学习数据结构的同时也在学习代码的优化,于是就应用上了.这套ADT更有通用性,包括对Item类型的比较,赋值,都通过函数来完成,而且有专门的可将Item类型拆成int类型的函数,这样这套ADT用来作用到char * 类型将易于更改.付出的代价就是增加了过程调用,不过带来的益处是明显的./* open_addressing_hash_wit

2010-10-22 13:35:00 1473

原创 开放定址散列表(线性探测法(双散列))实现文件C语言

<br />/* open_addressing_double_hash.c -- 开放定址散列表双散列实现文件 */#include <stdio.h>#include <stdlib.h>#include "open_addressing_double_hash.h"/* 局部函数声明 */static int Get_Prime_Value (const int size) ;static int Is_A_Prime (const int number) ;stati

2010-10-21 20:07:00 1724

原创 开放定址散列表(线性探测法(双散列))头文件C语言

<br />/* open_addressing_double_hash.h -- 开放定址散列表双散列头文件 */enum KindOfEntry {Legitimate, Empty, Deleted} ;#define PRIME 7/* 数据类型定义 */typedef int Item ;typedef struct cell{ Item item ; enum KindOfEntry info ;} Cell ;typedef struct has

2010-10-21 19:59:00 1966

原创 开放定址散列表(平方探测法)实现文件C语言

<br />/* open_addressing_hash(2) -- 开放定址散列表实现文件 */#include <stdio.h>#include <stdlib.h>#include "open_addressing_hash(2).h"/* 局部函数声明 */static int Get_Prime_Value (const int size) ;static int Is_An_Prime (const int number) ;static int Squa

2010-10-21 12:55:00 2367

原创 开放定址散列表(平方探测法)头文件C语言

/* open_addressing_hash(2).h -- 开放定址散列表头文件 */enum KindOfEntry {Legitimate, Empty, Deleted} ;/* 数据类型定义 */typedef int Item ;typedef struct cell{ Item item ; enum KindOfEntry entry ;} Cell ;typedef struct hashtable{ int size ; Cell

2010-10-21 12:39:00 1721

原创 开放定址散列表(线性探测法)实现文件C语言

<br />/* open_addressing_hash.c -- 开放定址散列表实现文件 */#include <stdio.h>#include <stdlib.h>#include "open_addressing_hash.h"/* 局部数据类型定义 */struct apple /* 我实在想不出别的名字了 */{ int full ; int value ;} ;/* 局部函数定义 */int Get_Prime_Value (const

2010-10-20 23:00:00 1504

原创 开放定址散列表(线性探测法)头文件C语言

<br />/* open_addressing_hash.h -- 开放定址散列表头文件 */enum KindOfEntry {Legitimate, Empty, Deleted} ;/* 数据类型定义 */typedef int Item ;typedef struct cell{ Item item ; enum KindOfEntry info ;} Cell ;typedef struct hashtable{ int size ;

2010-10-20 22:47:00 1045

原创 分离链接散列表实现文件C语言

<br />/* Separate_Chaining_Hash -- 分离链接散列表实现文件 */#include <stdio.h>#include <stdlib.h>#include "Separate_Chaining_Hash.h"/* 局部数据类型定义 */typedef struct pair{ ListNode * parent ; ListNode * current ;} Pair ;/* 局部函数声明 */int Get_Pr

2010-10-19 23:26:00 1123

原创 分离链接散列表头文件C语言

<br /><br />  话说这个东西原本以为很快就会写好,即使是前天才看是看的.实现部分用的就是一个表和size个链表.可事实上我写了不下8小时...写完了就好啊,不然我会很郁闷呢.<br />  主要卡壳的地方就是定义数据类型的时候,我反反复复更改了不下五遍.不想回忆起那些错误的行为,我想把我实现的思想说出来来帮助自己强化记忆.<br />  分离链接散列表用来解决冲突的问题,一旦发生冲突时就可以把数据放入相应索引指针指向的链表中.<br />  在定义完链表结构之后.使Header成为指向链表结点的

2010-10-19 23:16:00 888

原创 二叉搜索树挂链表实现文件C语言

<br />/* 17-8-09-11-21.54.c -- 第十七章第八题 *//* 17-8-10-17-10.56.c -- 当初决定先去看数据结构回头再弄这东西我觉得是正确的 */#include <stdio.h>#include <string.h>#include <stdlib.h>#include "17-8-09-11-21.20.h"/* 局部函数声明 */static Item * Make_Item (const Name_And_Kind

2010-10-17 20:46:00 874

原创 二叉搜索树挂链表头文件C语言

<br />/* 17-8-09-11-21.20.h -- 第十七章第八题 */#ifndef LAST_H_#define LAST_H_#define ADD_AN_ITEM 1#define SIZE 20/* 定义数据类型 *//* Name_And_Pet 暴露给用户的数据类型 */typedef struct name_and_pet{ char petname[SIZE] ; /* 宠物名 */ char petkind[SIZE] ; /*

2010-10-17 20:44:00 797

原创 一个月以前难住我的问题今天解决了.

  时间还真是个好东西,只要你肯努力,过一段时间后就会有收获.代码比较烂, 但还是有值得总结的东西./* 17-8-10-17-12.42.c -- 第十七章第八题 */#include #include #include #include "17-8-09-11-21.20.h"int main (void) ;void print_name_and_kind (const Item * const pitem) ;char menu (void) ;void cut_

2010-10-17 20:40:00 768

原创 2-d树实现文件C语言

<br />/* 2-d_tree.c -- 2-d树实现文件 */#include <stdio.h>#include <stdlib.h>#include "2-d_tree.h"/* 局部函数声明 */static Node * Make_Node (const Item * const pkey1, const Item * const pkey2) ;void Copy_Key1_To_Node (const Item * const pkey1, Node * c

2010-10-17 00:51:00 869

原创 一个统计代码行数的程序C语言

  我这么说其实是有歧义的,因为这个东西根本没有那么通用.不过有很简单的办法让这个程序更加通用,我介绍下运行此程序前的前期准备.  首先, 将所有代码文件放置到同一个空文件夹中.选定所有代码,重命名为1.于是有了下面的效果:  所有文件都是排列好的了,这样方便我操作.下面贴出来效果图,还真是令我惊讶的一个结果呢.  从5月24号开始自己已经写了这么多代码了啊. 下面附上源码,很简单的实现方式.不过居然也费了我两个小时,真搞不懂这两个小时我都干嘛了...可能就是我没瞧得起这么简单的一个任务,计划不周详,才导致

2010-10-15 18:48:00 4888

原创 二叉搜索树后序线索化+后序遍历C语言

void PreorderThreading (Tree * const ptree)static void Postorder_Threading (Tree * const ptree, Node * * const previous) ;static void A_Recursive_Function_For_Postorder_Threaded (const Tree * const ptree, const Node * const pnode) ;void PostorderThre

2010-10-14 02:22:00 1145

原创 二叉搜索树先序线索化+先序遍历C语言

<br />void PreorderThreading (Tree * const ptree) ;static void Preorder_Threading (Tree * const ptree, Node * * const previous) ;void PreorderThreadedTraversal (const Tree tree, void (* pfun) (const Item item)) ;void PreorderThreading (Tree * const

2010-10-14 02:20:00 975

原创 二叉搜索树中序线索化实现文件C语言

<br />/* threaded_tree.c -- 线索树实现文件 */#include <stdio.h>#include <stdlib.h>#include "threaded_tree.h"/* 局部函数声明 */static Node * Make_Node (const Item * const pitem) ;static int Left_Is_Greater_Than_Right (const Item left, const Item right) ;

2010-10-13 01:46:00 813

原创 二叉搜索树中序线索化头文件C语言

<br />/* threaded_tree.h -- 线索树头文件 */#define LINK 0#define THREAD 1/* 数据类型定义 */typedef int Item ;typedef struct node{ Item item ; struct node * left ; struct node * right ; int left_tag ; int right_tag ;} Node ;typedef struct

2010-10-13 01:39:00 820

原创 中序线索树插入例程(自调整前驱后缀指针)C语言

<br />int Insert (Tree * const ptree, const Item * const pitem){ Node * new_node ; Node * parent, * scan = *ptree ; if (NULL == (new_node = Make_Node (pitem))) return 0 ; if (TreeIsEmpty (ptree)) { *ptree = new_node ; (*ptree) -> lef

2010-10-12 15:58:00 995

原创 判断两棵树是否是相似的C语言

<br />int similar (const Tree t1, const Tree t2){ if (NULL == t1 || NULL == t2) return NULL == t1 && NULL == t2 ; else return similar (t1 -> left, t2 -> left) && similar (t1 -> right, t2 -> right) ;}

2010-10-10 18:53:00 1787

原创 判断两棵树是否是同构的C语言

<br />int isomorphic (const Tree t1, const Tree t2){ if (NULL == t1 || NULL == t2) return NULL == t1 && NULL == t2 ; else if (t1 -> item != t2 -> item) return 0 ; else return isomorphic (t1 -> left, t2 -> left) && isomorphic (t1 -> right,

2010-10-10 18:46:00 2883 1

原创 二叉搜索树层序遍历C语言

<br />  层序遍历,写完了,感慨下.<br />  不同于前序遍历,中序遍历,后序遍历,层序遍历没有使用栈模式,而是使用了队列.<br />  队列中的数据,即QueueItem是二叉搜索树结点指针,这样可以保存结点,并且可以方便处理栈为空时返回值的问题.也就是可以返回NULL.<br />  用一个函数实现,该函数接受一个Tree类型的变量.没有返回值.<br />  首先树的根结点入队,而后以队列不为空为条件进行循环.循环内部首先从队列中删除一个结点,并通过DeleteQueue () 的返回值Q

2010-10-06 15:35:00 2461

原创 返回一棵二叉搜索树中最深的结点的指针C语言

<br />static Node * search_the_deepmost_node (const Tree tree){ Node * left_node, * right_node ; if (tree != NULL) { left_node = search_the_deepmost_node (tree -> left) ; right_node = search_the_deepmost_node (tree -> right) ; if (NULL =

2010-10-06 01:20:00 1206

原创 打印树中关键字k1 - k2之间(含k1,k2)的所有元素C语言

<br />void seek_and_print (const Tree tree, const int k1, const int k2){ if (tree != NULL) { if (tree -> item >= k1) seek_and_print (tree -> left, k1, k2) ; if (tree -> item >= k1 && tree -> item <= k2) printf ("%d", tree -> item) ;

2010-10-05 14:20:00 1394

原创 生成一棵具有关键字从1到2的(H+1)次方-1且高为H的理想二叉搜索树C语言

Tree generate_ideal_binary_search_tree (const int height, int * const assigned_min){ Tree tree ; if (height >= 0) { tree = (Node *) malloc (sizeof (Node)) ; tree -> left = generate_ideal_binary_search_tree (height - 1, assigned_min) ; tr

2010-10-05 12:58:00 1011

原创 生成一棵最少结点,高度为height的AVL树C语言

<br />Tree min_avl_tree(const int height){ int last_node_assigned = 0 ; return gen_tree (height, &last_node_assigned) ;}Tree gen_tree (const int height, int * const lastnode){ Tree tree ; if (height >= 0) { tree = (Node *) malloc

2010-10-05 11:20:00 1576

原创 生成A-B之间随机数函数(含A,B)C语言

<br />static int rand_int (const int lower, const int upper){ return rand () % (upper - lower + 1) + lower ;}

2010-10-04 20:32:00 2962

原创 计算二叉树中节点个数,叶节点个数,满节点个数的函数

下面这三个是我写的.static int node_count (const Tree tree){ int the_number_of_left_subtree = 0, the_number_of_right_subtree = 0, the_number_of_node = 0 ; if (tree != NULL) { the_number_of_left_subtree = node_count (tree -> left) ; the_number_of_righ

2010-10-04 15:08:00 3150 2

原创 伸展树实现文件C语言(Aplaytree.c)

  学树第四天,第一课伸展树.写了8小时,好困啊.感觉真好.写完自己又读了一遍,记下了.  贴出来,还希望有人愿意跟我交流./* splay_tree.c -- 伸展树实现文件 */#include #include #include "splay_tree.h"/* 局部数据类型定义 */typedef Position Stack_Item ;typedef struct stack_node{ Stack_Item item ; struct stack_no

2010-10-04 01:47:00 1518

原创 伸展树头文件C语言(splay_tree.h)

/* splay_tree.h -- 伸展树头文件 *//* 数据类型定义 */typedef int Item ;typedef struct node{ Item item ; struct node * left ; struct node * right ;} Node ;typedef Node * Position ;typedef Node * SplayTree ;/* 接口函数声明 *//* 操作: 初始化一棵伸展树 */

2010-10-04 01:17:00 1467

原创 AVL树插入例程非递归实现C语言

  终于完成了AVL树插入例程的非递归实现.话说我是前天开始接触AVL树,今天用了一天时间完成了非递归插入例程.准确地说,应该是6小时.即使测试正确,还是愿意以此种形式温习、理解一下.也想显摆显摆,因为在我看来,学AVL树第三天写出非递归插入例程很了不起了.如果你觉得我好笑,那你也不应该怪我,你该认为我是一个笨到用了三天才解决此问题又在这里炫耀的一个可悲的人;如果你觉得我了不起,那么我是一个天才.  主要思路就是:AddItem ()为执行该任务函数.该函数接受一个Tree类型的变量和一个Item类型的变量

2010-10-02 00:30:00 3417

原创 AVL树实现文件C语言(AVLTree.c)

/* AVLTree.c -- AVL树实现文件 */#include #include #include "AVLTree.h"/* 局部函数声明 */static int Left_Above_And_Beyond_Right (const Item left, const Item right) ;static int Left_Is_Less_Than_Right (const Item left, const Item right) ;static Positio

2010-10-01 01:35:00 1530

原创 AVL树头文件C语言(AVLTree.h)

我的第一颗AVL树.弄了一天,虽然还没有最终测试完毕./* AVLTree.h -- AVl树头文件 *//* 数据类型定义 */typedef int Item ;typedef struct node{ Item item ; struct node * left ; struct node * right ; int height ;} Node ;typedef Node * Position ;typedef Position Tree ;

2010-10-01 01:33:00 2140

For save__个人使用

AVL树. 刘洋拿来给我看的,我今天没有时间看了.先保存一下.回头来看.

2011-06-30

<<数据结构与算法分析-C语言描述>>编程练习

<<数据结构与算法分析-C语言描述>>编程练习. 课后习题的C语言实现.

2011-04-06

空空如也

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

TA关注的人

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