数据结构与算法
李子树呢
以梦喂马,驰骋岁月,以梦为马,诗酒趁年华。
展开
-
学生管理系统(C++,控制台,文件读取,姓名排序)
这是一个用C++写的控制台程序,利用简单的菜单实现学生信息的管理。简图如下所示: 菜单栏: 查询数据: 修改数据: 打印数据: 以下是添加了一些学生信息的进行一些操作的结果: 除了上面所展示的功能以外,还可以将所有的学生信息保存到一个txt文件中,或者将一个文件里面的学生信息读取进来,当原创 2016-08-19 17:09:40 · 11561 阅读 · 12 评论 -
哈夫曼压缩/解压缩(控制台,C++)
哈夫曼树是大二上学期的时候作为大一下学期的数据结构的课程毕业设计的,所幸上学期并没有在学习了一些基础的数据结构之后就此忘记,而是自己在有空的时候自己去实现了它们。即是如此,在初步了解哈夫曼的原理之后,我只是隐隐约约的了解它的原理,在完成它的过程之中,依旧遇到了许多的问题,但是一切都已经成功的克服,下面我会简单的介绍哈夫曼编码的压缩和解压缩的原理。Ⅰ.哈夫曼原理 哈夫曼是利用字符在一个文件中字符出现原创 2016-11-20 16:53:50 · 3487 阅读 · 1 评论 -
【转载】面试中的排序算法总结
前言查找和排序算法是算法的入门知识,其经典思想可以用于很多算法当中。因为其实现代码较短,应用较常见。所以在面试中经常会问到排序算法及其相关的问题。但万变不离其宗,只要熟悉了思想,灵活运用也不是难事。一般在面试中最常考的是快速排序和归并排序,并且经常有面试官要求现场写出这两种排序的代码。对这两种排序的代码一定要信手拈来才行。还有插入排序、冒泡排序、堆排序、基数排序、桶排序等。面试官对于这些排序可能会要转载 2016-12-03 18:33:36 · 527 阅读 · 0 评论 -
二叉排序树节点的删除(C++,算法导论),前中后序遍历(递归/非递归,栈实现),按层次遍历(队列实现)
由于代码中包含了二叉树,栈,队列三种结构的实现,为了文件结构更清晰,我会列出各文件名以及它们各自所实现的功能。栈和队列只是为二叉树而创建的,所以它们的头文件只是实现了最基本的函数,如压栈,出栈,入队列,出队列,获取节点元素……二叉树实现了节点插入和删除,数据搜索按照算法导论一书而来;先序,中序,后序的递归和非递归算法,非递归算法使用栈实现;按层次遍历用队列实现。栈,队列和二叉树均采用了类模板,而栈原创 2016-05-31 20:08:32 · 1074 阅读 · 0 评论 -
无序符号表(链表实现,JAVA,算法(四))
符号表简介:将键和值联系起来。能够将键值对插入符号表并希望在以后可以使用键找到对应的值。 链表作为一种简单的数据结构,也是最开始学习的,它可以稍加修改一下便可以用来实现队列和栈其它的数据结构。符号表使用链表无非就是实现简单,将它的每一个节点保存对应的键值对,就可以达到遍历键而找到值的操作了。链表的操作大都是线性的,例如无序插入(这里虽然是头结点插入,但由于需要遍历链表以查询是否重复键,也达到了线原创 2017-08-14 09:49:31 · 999 阅读 · 0 评论 -
有序符号表(数组实现,JAVA,算法(四),二分法)
数组实现的有序符号表介绍: 两个平行数组,相同的下标分别是键和值,由于查入和删除需要调整数组大小,所以和无序链表一样,这两个操作仍然是线性的。但是符号表最为频繁的操作应该是查询的,查询操作可以使用二分法实现,达到了logN的复杂度。二分法的实现需要排好序的键,所以有了泛型的存在,需要实现Comparable接口。rank函数用二分法查找键,在很多函数里面我们都会使用这个函数原创 2017-08-14 10:49:45 · 1094 阅读 · 0 评论 -
有序符号表(二叉树实现,JAVA,算法(四))
二叉树的实现和链表的节点是一致的,一个节点里面包含了键值对。只是由于二叉树的特性,便于插入,删除,查询等操作。二叉树的性质使这些操作都可以在logN的时间完成。但是,,,由于执行插入操作的不确定性,比如大多的升序或者降序插入,将导致二叉树的高度像链表一样,不再具有二叉树特有的logN的高度了。所以基于二叉树之上,一种可以维持自身高度的树出现了,那就是红黑树。下一篇再介绍红黑树。package com原创 2017-08-14 11:24:50 · 503 阅读 · 0 评论