随笔分类 -  数据结构

算法设计和数据结构学习_6(单链表的递归逆序)
摘要:单链表的逆序方法有很多种,求职过程中会碰到类似的题。比如进栈出栈;变量链表放入数组后利用数组的逆序重构链表;遍历链表时每次访问的节点都指向它的前节点;递归调用等。本次实验是用递归的方法实现单链表的逆序,网上有很多类似的code. 这次实验主要要注意的是指针引用的使用,要充分理解引用是个别名,指针的引用可以参考其它网友的一篇博文:指针的引用 实验内容是先构造一个随机指定长度的单链表,将其输出,然后逆序后输出。 代码如下:// reverse_list.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include #include #inc 阅读全文
posted @ 2013-07-27 13:15 tornadomeet 阅读(4850) 评论(0) 推荐(0) 编辑
算法设计和数据结构学习_5(BST&AVL&红黑树简单介绍)
摘要:前言: 节主要是给出BST,AVL和红黑树的C++代码,方便自己以后的查阅,其代码依旧是data structures and algorithm analysis in c++ (second edition)一书的作者所给,关于这3中二叉树在前面的博文算法设计和数据结构学习_4(《数据结构和问题求解》part4笔记)中已经有所介绍。这里不会去详细介绍它们的实现和规则,一是因为这方面的介绍性资料超非常多,另外这3种树的难点都在插入和删除部分,其规则本身并不多,但是要用文字和图形解释其实还蛮耗时的。所以,我们在看教程时,主要是要抓住这几种树的思想,然后对照对应的代码来看就ok了,能把代码... 阅读全文
posted @ 2013-06-18 09:46 tornadomeet 阅读(2966) 评论(0) 推荐(0) 编辑
算法设计和数据结构学习_4(《数据结构和问题求解》part4笔记)
摘要:前言: 数据结构这种东西,快速看了也只能概念上多理解了点,关键还是后续实践中的使用。好吧,本节依旧是data structures and algorithm analysis in c++ (second edition)中的笔记蜓点水般的笔记,书中第4部分的笔记,第3部分内容暂时先跳过(那是一些具体的应用例子)。本次的内容有栈和队列,链表,树,搜索二叉树,hash表,二叉堆。其中的队列,链表比较简单,树,二叉堆和hash表比较难。 Chap16: 如果类的数据成员是first-class(比如vector)的,则针对它的Big-Three会自动实现,不需要再去完成它。如果要实现c... 阅读全文
posted @ 2013-06-11 22:37 tornadomeet 阅读(2173) 评论(0) 推荐(1) 编辑
算法设计和数据结构学习_3(《数据结构和问题求解》part2笔记)
摘要:前言: 本节是data structures and algorithm analysis in c++ (second edition)中第2大部分的随手笔记,主要内容有算法复杂度分析,标准模板库介绍,递归思想和算法,常见的排序算法及其分析,随机数产生器和随机算法等。 Chap6: 一个算法的复杂度与输入数据量的大小,算法本身,编译器优化性能,所运行机器硬件的性能,算法本身等因素相关。从这些方面来看,即使是已经确定的2个算法F和G,我们也不能说2个算法的运行时间永远满足F(N)=G(N). 一是当N比较小时,两者的相差太小以至于感觉不出来,二是当N大到一定程度时,F(N)和G(N)... 阅读全文
posted @ 2013-06-04 20:40 tornadomeet 阅读(2247) 评论(0) 推荐(0) 编辑
算法设计和数据结构学习_2(常见排序算法思想)
摘要:一般约定我们是按照从小到大的顺序排序。按照向量的形式来参考排序中数组元素的相对位置,行向量中最左边为数组的第一个元素,且称为前面。列向量中最上面的元素为数组的第一个元素,也是称为前边。对常见的排序算法的思想要有个认识,比如说:冒泡排序,选择排序,插入排序,快速排序,shell排序,堆排序,归并排序,基排序。算法的稳定性是看原先数据中相同的元素值的顺序在排序后是否改变了?如果依旧保持不变,则说明该算法是稳定的。比如说,选择排序、快速排序、希尔排序、堆排序不是稳定的排序算法,而冒泡排序、插入排序、归并排序和基数排序是稳定的排序算法。选择排序是每次找到数据中最大的或者最小的数,然后和第一个数交换,每 阅读全文
posted @ 2013-04-18 00:04 tornadomeet 阅读(3352) 评论(0) 推荐(0) 编辑
算法设计和数据结构学习_1(一道堆排序作业题)
摘要:前言 这时上次学妹课程的一道作业题,我花了点时间做了下,其题目内容为: 试写一程序,可以对一二元树(binary)进行堆积排序(heap sort) (a)使用者可自己决定输入二元树的节点个数 (i)node数不超过50 (b)节点值由随机方式产生,并印出随机设值结果 (i)以时间复杂度O(n)的方式设值 (ii)假设值不可重复 (iii)最大值不可大于node数 (例如node数为9,因此最大值为9) (c)使用者可决定使用MAX-HEAP或者是MIN-HEAP来排序 (d)须将重建堆积得过程印出,以及最后输出排序结果 Sample Output: 后面在网上查了下... 阅读全文
posted @ 2012-11-07 16:11 tornadomeet 阅读(3396) 评论(0) 推荐(1) 编辑


阿萨德发斯蒂芬