
数据结构与算法
小凡1991
我就是我
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
各种排序方法总结
原文链接:http://www.cnblogs.com/alexworks/articles/1847080.html 选择排序、快速排序、希尔排序、堆排序不是稳定的排序算法, 冒泡排序、插入排序、归并排序和基数排序是稳定的排序算法。 冒泡法: 这是最原始,也是众所周知的最慢的算法了。他的名字的由来因为它的工作看来象是冒泡: 复杂度为O(n*n)。当数据转载 2016-10-01 10:22:35 · 414 阅读 · 0 评论 -
使用C语言描述静态链表和动态链表
原文网址:http://www.cnblogs.com/choon/p/3915706.html 静态链表和动态链表是线性表链式存储结构的两种不同的表示方式。 静态链表的初始长度一般是固定的,在做插入和删除操作时不需要移动元素,仅需修改指针,故仍具有链式存储结构的主要优点。 动态链表是相对于静态链表而言的,一般地,在描述线性表的链式存储结构时如果没有特别说明即默认描述的是动态链表转载 2016-10-01 10:41:15 · 2118 阅读 · 0 评论 -
字符串匹配的KMP算法
http://kb.cnblogs.com/page/176818/ 字符串匹配是计算机的基本任务之一。 举例来说,有一个字符串"BBC ABCDAB ABCDABCDABDE",我想知道,里面是否包含另一个字符串"ABCDABD"? 许多算法可以完成这个任务,Knuth-Morris-Pratt算法(简称KMP)是最常用的之一。它以三个发明者命名,起头的那个转载 2016-10-03 22:35:55 · 327 阅读 · 0 评论 -
用递归函数实现字符串反向输出
函数块: void print() { char a; scanf("%c",&a); if (a!='#') { print(); } if (a!='#') { printf("%c",a); } } 测试结果:原创 2016-10-03 22:49:03 · 6459 阅读 · 2 评论 -
二叉树的定义、性质、存储
二叉树的定义、性质、存储 二叉树的定义 二叉树是每个节点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用于实现二叉查找树和二叉堆。 二叉树的每个结点至多只有二棵子树(不存在度大于2的结点),二叉树的子树有左右之分,次序不能颠倒。 特殊二叉树 1原创 2016-10-04 22:48:17 · 517 阅读 · 0 评论 -
算法:查找链表中倒数第k个节点
题目:输入一个单向链表,输出该链表中倒数第k个结点。链表的倒数第0个结点为链表的尾指针。 分析:为了得到倒数第k个结点,很自然的想法是先走到链表的尾端,再从尾端回溯k步。可是输入的是单向链表,只有从前往后的指针而没有从后往前的指针。因此我们需要打开我们的思路。既然不能从尾结点开始遍历这个链表,我们还是把思路回到头结点上来。假设整个链表有n个结点,那么倒数第k个结点是从头结点开始的第n-k-1原创 2016-10-30 20:54:31 · 5317 阅读 · 1 评论