
数据结构
wang_cheng_hei
这个作者很懒,什么都没留下…
展开
-
矩阵旋转
/*题目要求:输入一个n*n字符矩阵,把它左转90度后输出 样例输入:3abcdefghi 样例输出:a b cd e fg h ic f ib e ha d g */ #include#define MAXN 10char buf[MAXN][MAXN];char s[MAXN][MAXN];int main(void){ int i=0, j, n;转载 2013-10-31 20:28:18 · 848 阅读 · 0 评论 -
二叉树的遍历(非递归)
二叉树的先序遍历void preorder(Btree *root){ Btree *p=root; stacks; while(p!=NULL||!s.empty()) { while(p!=NULL) { coutdata<<" "; s.push(p); p=p->lchild; } if(!s.empty()) { p=s.to原创 2014-02-27 11:33:11 · 748 阅读 · 0 评论 -
图遍历算法及其应用
图的遍历算法有两种:深度优先搜索和广度优先搜索深度优先搜索算法所遵循的策略是尽可能“深”地搜索一个图,它的基本思想是首先访问图中某一个起始定点v,然后由v出发,访问与v邻接且为被访问的任一个顶点w,再访问与w邻接且未被访问的任一顶点...重复上述过程,当不能再继续向下访问时,一次退回到最近被访问的顶点,若它还有邻接顶点未被访问,则从该点开始继续上述搜索过程,直到图中所有顶点均被访问过为止利原创 2014-03-03 17:33:18 · 2756 阅读 · 0 评论 -
最长公共子序列问题
一个给定序列的子序列就是将给定子序列中零个或多个元素去掉之后得到的结果,即子序列要保持与原序列的相对顺序,不是一定要是原序列中连续的一块。正如最长公共子串和最长公共子序列的区别,前者要求是原序列中连续的一段。给定序列X和Y,求解他们的最长公共子序列。最直接的方法就是暴力搜索的方法,穷举X的所有子序列,对每个子序列检查它是否也是Y的子序列,记录找到的最长子序列。因为X的每个子序列对应X的下标集合原创 2014-03-06 18:11:57 · 813 阅读 · 0 评论 -
找出数组中出现次数超过数组长度一半(>=1/2 >1/3)的那个数
先讨论超过数组长度一半的情况超过数组长度一半意味着这个数字的个数大于其他全部数字个数之和,算法大致为,首先设置两个参数currentAxis,currentNum。参数currentAxis用来记录当前认为是我们要找的那个数字,参数currentNum用来记录CurrentAxis参数对应的那个数字连续出现的次数。步骤如下:(1)初始化:设当前的数组为data[],数组的长度为n。curr原创 2014-03-20 13:13:25 · 2991 阅读 · 1 评论 -
leetcode Linked List Cycle II
问题:Given a linked list, return the node where the cycle begins. If there is no cycle, return null原创 2014-04-23 13:48:46 · 692 阅读 · 0 评论