数据结构
文章平均质量分 89
ywok526
这个作者很懒,什么都没留下…
展开
-
数据结构之单链表
单链表:详细就不写了,可以看下面这篇文章,特别详细!相关资源:点击打开链接定义:typedef struct Node{ ElemType data; struct Node* next;}Node, *LinkList;自己实践才知道,太容易出错了,动不动就报错!以后一定要实践实践,细心细心!以下为代码的粗糙实现,写得不好,见谅!(原创 2014-03-31 15:13:22 · 534 阅读 · 0 评论 -
二叉查找树的概念以及实现 前序、中序和后序递归非递归遍历算法
本文主要介绍二叉查找树以及实现,另外实现前序、中序和后序递归非递归遍历算法。二叉查找树:概述: 《算法导论》第12章介绍了二叉查找树的主要性质。二叉查找树(Binary Search Tree),也称二叉搜索树、有序二叉树(orderedbinary tree),排序二叉树(sorted binary tree),具有以下性质:若任意节点的左子树不空,则原创 2014-08-26 22:36:38 · 1534 阅读 · 0 评论 -
栈与队列的实现__ 两个栈实现队列 vs 两个队列实现栈
栈与队列的实现两个栈实现队列 vs 两个队列实现栈 栈(stack)规定元素是先进后出(FILO),队列(queue)是先进先出(FIFO)。栈的实现(数组)实现#include #include #include using namespace std;const int SIZE=10;class stack{public: stac原创 2014-08-22 22:43:34 · 574 阅读 · 0 评论 -
O(1)时间求栈中最小(大)元素
问题:对stack进行扩展,完成正常的push,pop操作,新增访问最小(大)元素的接口min(max),使得push,pop,Min的时间复杂度都是O(1)。难点在于怎么维持stack的最小(大)值,一切排序和查找都不可能实现O(1)的时间复杂度找到最小值。思路:如下图所示,以空间换取时间。通过增加一个最小值栈来存储上一个最小值,以维持目前的最小值。1、 入栈的元素比当原创 2014-09-06 09:53:28 · 1419 阅读 · 0 评论 -
排序算法全攻略 1
虽然排序算法是一个简单的问题,但绝对是笔试面试的基础考点,重重之重。来个排序问题都没回答出来,留给面试官的印象也就那样了。排序主要分为:比较排序:快速排序、堆排序、归并排序、插入排序、希尔排序、选择排序、冒泡排序非比较排序:基数排序、计数排序、桶排序性能比较点:时间复杂度:一般而言,好的性能是O(nlgn),且坏的性能是O(n^2)。对于一个排序理想的性能是O(n)稳定性:原创 2014-08-21 22:59:42 · 757 阅读 · 0 评论 -
链表面试笔试题目总结
链表是最基本的数据结构,凡是学计算机的必须的掌握的,在面试的时候经常被问到,关于链表的实现,百度一下就知道了。在此可以讨论一下与链表相关的练习题。(1)在单链表上插入一个元素,要求时间复杂度为O(1)解答:一般情况在链表中插入一元素是在末尾插入的,这样需要从头遍历一次链表,找到末尾,时间为O(n)。要在O(1)时间插入一个新节点,可以考虑每次在头节点后面插入,即每次插入的节点成原创 2014-08-30 22:04:33 · 1781 阅读 · 2 评论 -
折半查找的实现
折半查找法的两种实现折半查找法:在有序表中,把待查找数据值与查找范围的中间元素值进行比较,会有三种情况出现:1) 待查找数据值与中间元素值正好相等,则放回中间元素值的索引。2) 待查找数据值比中间元素值小,则以整个查找范围的前半部分作为新的查找范围,执行1),直到找到相等的值。3) 待查找数据值比中间元素值大,则以整个查找范围的后半部转载 2014-04-03 15:45:32 · 593 阅读 · 0 评论 -
单链表长度未知,快速找到其中间节点----不错的解决方案
今天看小甲鱼数据结构的视频时,其中讲了腾讯的一道面试题目!相当经典,解法也相当不错。学习了!普通的方法:首先遍历一遍单链表以确定单链表的长度L。然后再次从头节点出发循环L/2次找到单链表的中间节点。算法复杂度为O(L+L/2)=O(3L/2)。能否再优化一下这个时间复杂度呢?巧妙方法:设置两个指针*search、*mid都指向单链表的头节点。其中* search的移动速度是*m原创 2014-03-31 15:39:43 · 559 阅读 · 0 评论 -
循环链表
资料来源:http://student.zjzk.cn/course_ware/data_structure/web/xianxingbiao/xianxingbiao2.3.2.htm点击打开链接循环链表(Circular Linked List) 循环链表是一种首尾相接的链表。1、循环链表(1)单循环链表——在单链表中,将终端结点的指针域NULL原创 2014-04-01 10:20:47 · 556 阅读 · 0 评论 -
散列函数(哈希函数,Hash Function)
说明 散列的概念属于查找,它不以关键字的比较为基本操作,采用直接寻址技术。在理想情况下,查找的期望时间为O(1)。简单的说,hash函数就是把任意长的输入字符串变化成固定长的输出字符串的一种函数。输出字符串的长度称为hash函数的位数。(下图来源于维基百科)散列函数把消息或数据压缩成摘要,使得数据量变小,将数据的格式固定下来,比如我们自定义密码的存储。一句话:散原创 2014-08-13 18:41:49 · 26554 阅读 · 3 评论