数据结构/算法
文章平均质量分 67
skylinesky
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
链表归并排序
主要思路: 1 如果为NULL或者只有一个节点那么直接返回; 2 将链表分成两部分,分别进行排序,形成两个有序链表; 3 将两个有序链表合并;void merge_sort(struct Node **list){ struct Node *p = *list; st原创 2012-05-27 23:08:54 · 648 阅读 · 0 评论 -
c++ 实现队列
主要是想联系一下c++中的模板怎么使用,随便复习一下队列。队列最基本的数据结构元素先进先出,这些就不多说了。注意:写程序时copy构造函数和copy赋值函数的写法。#include#includeusing namespace std;templateclass QueueItem{public : QueueItem() {} QueueItem(const T原创 2012-05-22 19:55:33 · 553 阅读 · 0 评论 -
二叉树 层次遍历
二叉树按层次遍历,要求在不同的层次之间输出空行。template void Tree::level() const { queue*> q; Node *p = root; if (p != 0) { q.push(p); q.push(0); } while (!q.empty()) { p = q.front(); q.pop(); if (p != 0)原创 2012-05-23 09:27:34 · 647 阅读 · 0 评论 -
二叉查找树转为双向链表
对于二叉查找树本能的想到了中序遍历,中序遍历二叉树的结果是有序的,只要使用非递归中序遍历,中间稍作修改应该就可以。这个是第一反应,觉得应该不难。 不过还是,网上搜索一下,在网易何海涛的技术博客中看到,关于递归的解法。这个方法虽然有些耗资源,但是我觉得第一个 想到的应该是这一个,应为二叉树本来就是递归结构,二叉树很多问题的解决都是从递归入手。下面还是梳理一下这两个思路:1、原创 2012-05-23 14:56:26 · 860 阅读 · 0 评论 -
全排列算法递归实现
全排列算法有很多中实现算法,最简单的递归实现,还有字典排序实现(没太看明白)。下面主要说一下递归实现。假设求 array = { 1, 2, 3, 4, 5}的全排列,输出依次是1{2,3,4} 2{1 ,3,4} 3{ 1, 2, 4} 4{ 1, 2, 3}对于{ 2, 3, 4} : 2{ 3, 4} 3{ 2, 4} 4 { 2, 3}对于原创 2012-06-03 00:19:18 · 1120 阅读 · 0 评论 -
KMP算法详解
字符串经典的匹配算法,时间算法复杂度为(n+m)。说到kmp算法不得不提朴素的字符串匹配算法,在朴素字符串匹配算法中,每次当匹配不相等时就回溯到开始匹配字符串的下一个字符,重新开始匹配。这种算法的时间复杂度为(n*m)。kmp算法之所有能够将时间复杂度将为(n+m),是因为kmp算法不是每次都回溯到字符串开始匹配的位置下一个位置重新开始匹配,而是利用前面匹配的信息,进行原创 2012-06-02 23:57:57 · 1128 阅读 · 0 评论 -
IP转换为32位无符号数(即,inet_aton函数)
上周跟着宿舍一哥们去海豚浏览器霸面,问我的题比较简单,二分查找的;当时莫名其妙的紧张了,答的不好,被鄙视了。不过问宿舍哥们的题是IP转换成无符号32位整数,当时我感觉这个好像很熟悉的,就是想不起来。现在正好看网络编程,都清楚了。在unix网络编程中,IP地址有两种表示方法,一种是:字符串“192.168.101.25”;另一种是:与字符串对应的32位无符号数; unix网络编程原创 2012-05-29 01:33:39 · 5906 阅读 · 0 评论 -
单链表转置
单链表转置都很熟里,这里只是练一下链表操作,另外还有几点需要注意,如果是递归解决该问题呢,如果是相邻两个转置有怎么处理。1. 单链表转置非递归void reverse(struct Node **list){ struct Node *currentp = *list; struct Node *pleft = NULL; struct Node *pright = NULL;原创 2012-05-27 17:56:26 · 7311 阅读 · 0 评论 -
二分查找的应用
二分查找都很熟悉了,对于有序的数组来说,对齐进行处理基本都是二分查找。下面来看几个应用:1、N+1个数,放在长度为N的数组里面且元素有序,元素从0-N+1,且没有重复,求出缺少哪一个元素。例如:array【10】 = {0,1,2,3,5,6,7,8,9,10}利用二分查找思路:如果元素与其索引相等,那么继续向后寻找(即low = mid + 1),如果元素与其索引不相等那么向前找(即原创 2012-05-23 20:14:00 · 1168 阅读 · 0 评论
分享