数据结构&算法
bysun2013
专注于Linux,研究学习Linux内核编程
展开
-
数据结构学习列表
2013年7月份,在空余时间练习了一遍C语言的数据结构,基本的结构已经做过了,现列一下待做的工作: 1. 迷宫求解 简单计算器 书目索引 m元多项式 2. 最小生成树 拓扑排序 关键路径 最短路径 图的数据表示(邻接矩阵和邻接表)原创 2013-08-23 22:33:01 · 871 阅读 · 0 评论 -
排序算法—堆和堆排序
1.堆 堆实际上是一棵完全二叉树,其任何一非叶节点满足性质: Key[i]=Key[2i+1]&&key>=key[2i+2] 即任何一非叶节点的关键字不大于或者不小于其左右孩子节点的关键字。 堆分为大顶堆和小顶堆,满足Key[i]>=Key[2i+1]&&key>=key[2i+2]称为大顶堆,满足 Key[i] 2.堆排序的思想 利用大转载 2013-11-03 23:05:51 · 658 阅读 · 0 评论 -
将二元树转换成一个排序的双向链表(方法二)
这个题目是微软的面试题,将二元树转换成一个排序的双向链表,直接贴代码! 该方法在中序遍历二叉树时,完成指针的转换 /* * main.c * * Created on: Nov 30, 2013 * Author: bing * * 题目:输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。 * 要求不能创建任何新的结点,只调整指针原创 2013-11-30 19:59:15 · 784 阅读 · 0 评论 -
比赛赛程安排算法--分治算法
/* * bisaisaicheng.c * * Created on: Nov 30, 2013 * Author: bing * * 每个选手必须与其他所有选手进行一次比赛,且每位选手每天必须比赛一场 * 利用分治算法来简化日程的安排,一分为二的方法 * */#include #define MAX_NUM 16int biao[MAX_NUM+1][MAX_NUM+1];int schedu原创 2013-11-30 14:59:21 · 4281 阅读 · 0 评论 -
将二元树转换成一个排序的双向链表(方法一)
这个题目是微软的面试题,将二元树转换成一个排序的双向链表,直接贴代码! /* * main.c * * Created on: Nov 27, 2013 * Author: bing * * 题目:输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。 * 要求不能创建任何新的结点,只调整指针的指向。 * * 比如将二元查找树原创 2013-11-30 19:05:46 · 798 阅读 · 0 评论 -
求子数组的最大和
题目:输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为O(n)。 看到这个题目的时候一点头绪都没有,看过了别人写的才算明白,其实还可以实现对起始位置的标注,懒得改了。卡住我的不是程序的实现,反而是 scanf()对不定长整数输入的实现,基础太差了... 什么都不说了,继续努力练习! #in原创 2013-12-07 14:48:11 · 871 阅读 · 0 评论 -
设计包含 min 函数的栈
题目: 定义栈的数据结构,要求添加一个 min 函数,能够得到栈的最小元素。要求函数 min、push 以及pop 的时间复杂度都是 O(1). #ifndef STACK_H_INCLUDED #define STACK_H_INCLUDED #include #include #define STACK_INIT_SIZE 50 #define STACK_INCREMNE原创 2013-12-03 20:24:27 · 910 阅读 · 0 评论