随笔分类 - 数据结构课程
二叉树的非递归遍历与层次遍历
摘要:二叉树的递归遍历很好写,也很好理解。但因为是递归程序,不可避免地需要调用系统栈,耗时较长,这里我们来探究一下二叉树的非递归遍历的算法。这种方法需要使用栈这种数据结构,这里关于栈的一些操作函数可以看成伪代码吧,先给出线序、中序、后序遍历的代码即说明。 先序遍历: 1 void PreOrderTrav
链表去重
摘要:数据结构上机实验上的一道题。 设一带头结点的单链表,设计算法将表中值相同的元素仅保留一个结点。 提示:指针p从链表的第一个元素开始,利用指针q从指针p位置开始向后搜索整个链表,删除与之值相同的元素;指针p继续指向下一个元素,开始下一轮的删除,直至p==null为至,既完成了对整个链表元素的删除相同值
数据结构——顺序表与链表
摘要:1.顺序表 我在学习完顺序表后一直对顺序表、数组、结构体数组这几个概念存在一些疑问,这里给出一些分析和看法。 顺序表:在计算机内存中以数组的形式保存的线性表,是指用一组地址连续的存储单元依次存储数据元素的线性结构。 数组:把具有相同数据类型的若干变量按有序的形式组织起来,以便于程序处理,这些数据元素
数据结构—堆排序
摘要:感谢大佬的博客https://www.cnblogs.com/chengxiao/p/6129630.html 预备知识 堆排序 堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间复杂度均为O(nlogn),它也是不稳定排序。首先简单了解下堆结构。 堆 堆
关于《数据结构》课本KMP算法的理解
摘要:数据结构课上讲的KMP算法和我在ACM中学习的KMP算法是有区别的,这里我对课本上的KMP算法给出我的一些想法。 原理和之前的KMP是一样的https://www.cnblogs.com/wkfvawl/p/9768729.html,但是不同点在于之前的KPM中next数组存放的是到了该位时最大前后
数据结构——哈夫曼(Huffman)树+哈夫曼编码
摘要:前天acm实验课,老师教了几种排序,抓的一套题上有一个哈夫曼树的题,正好之前离散数学也讲过哈夫曼树,这里我就结合课本,整理一篇关于哈夫曼树的博客。 主要摘自https://www.cnblogs.com/skywang12345/p/3706821.html感谢大佬 https://www.cnbl
数据结构——归并排序
摘要:这篇博客主要摘自https://www.cnblogs.com/chengxiao/p/6194356.html我又用C++重写了一下代码 基本思想 归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分(di
数据结构——快速排序
摘要:这篇博客主要转自《啊哈!算法》http://developer.51cto.com/art/201403/430986.htm 高快省的排序算法 有没有既不浪费空间又可以快一点的排序算法呢?那就是“快速排序”啦!光听这个名字是不是就觉得很高端呢。 假设我们现在对“6 1 2 7 9 3 4 5 10
数据结构——二叉树操作
摘要:Description 根据给定的字符串生成二叉树并前序、中序、后序此二叉树。 根据给定的字符串生成二叉树并前序、中序、后序此二叉树。 根据给定的字符串生成二叉树并前序、中序、后序此二叉树。 Input 给定一字符串,其中#表示空。 例:上图输入为 HDB#A##C##G#FE### Input 给