nomasp

風立ちぬ、いざ生きめやも」

如何用两个栈实现一个队列,以及用两个队列实现一个栈

开始再开始开始实现之前,首先将定读者已经理解了栈和队列的区别(如果不理解的话,可以先看看这一篇,传送门:【算法】7 分不清栈和队列?一张图给你完整体会 )用两个栈实现一个队列这本来就是一道面试题,所以如果你感兴趣的话可以先自己实现一遍。这是队列的声明:template <typename T...

2015-10-24 13:56:38

阅读数 2673

评论数 0

图论算法 有图有代码 万字总结 向前辈致敬

图的定义背景知识看到这篇博客相信一开始映入读者眼帘的就是下面这幅图了,这就是传说中的七桥问题(哥尼斯堡桥问题)。在哥尼斯堡,普雷格尔河环绕着奈佛夫岛(图中的A岛)。这条河将陆地分成了下面4个区域,该处还有着7座连接这些陆地的桥梁。问题是如何从某地出发,依次沿着各个桥,必须经过每座桥且每座桥只能经过...

2015-05-18 20:55:46

阅读数 20812

评论数 31

图论算法 有图有代码 万字总结 向前辈致敬

图的定义背景知识看到这篇博客相信一开始映入读者演练的就是下面这幅图了,这就是传说中的七桥问题(哥尼斯堡桥问题)。在哥尼斯堡,普雷格尔河环绕着奈佛夫岛(图中的A岛)。这条河将陆地分成了下面4个区域,该处还有着7座连接这些陆地的桥梁。问题是如何从某地出发,依次沿着各个桥,必须经过每座桥且每座桥只能经过...

2015-05-11 21:15:32

阅读数 2560

评论数 1

【数据结构】回顾优先队列(堆)

1.优先队列有两项基本操作:插入(insert)和删除最小项(deleteMin),后者的工作是找出、返回和删除优先队列中最小的元素。而insert操作则等价于enqueue(入队),deleteMin则等价于dequeue(出队)。补充:C++提供2个版本的deleteMin,一个删除最小项,另...

2015-05-10 12:46:56

阅读数 1924

评论数 0

【数据结构】回顾散列表

1.散列表(hash table)的实现成为散列(hashing),是一种以常数平均时间执行输入、删除和查找的技术。但是那些需要元素间任何排序信息的数操作将不会得到有效的支持。2.散列函数示例int hash(const string & key, int tableSize) { ...

2015-05-09 17:31:13

阅读数 1637

评论数 0

【数据结构】回顾二叉树

1.为什么会有树?因为当有大量的输入数据时,链表的线性访问时间就显得略长了。而树结构,其大部分操作的运行时间平均为O(logN)。2.树的实现并不难,几行代码就搞定了。struct TreeNode { Object element; TreeNode *firstChild; ...

2015-05-09 16:46:44

阅读数 1723

评论数 0

【数据结构】回顾表、栈、队列

1.如何通过调整链而不是数据来交换两个相邻的元素? // 单向链表 Node *p,*afterp; p=beforep->next; afterp=p->next; p->next=afterp->next; beforep-&...

2015-05-09 15:31:49

阅读数 1597

评论数 0

【数据结构】回顾栈ADT和队ADT

1.简单的说,栈就是只在一个位置上进行插入和删除操作的表,而这个特殊的位置就是表的末端,但这却不被成为栈的末端,而是顶(Top)。2.栈的基本操作时进栈和出栈,英文名分别是push和pop,分别相当于插入和删除。切记对空栈进行pop和top操作在栈ADT被认为是错误的,而如果push在空间之外进行...

2015-05-07 22:40:30

阅读数 2146

评论数 0

【数据结构】回顾表ADT

1.对于表的所有操作来说,都可以使用数组来实现,而且数组虽然是静态分配的,但内部存储数组的vector类却允许在需要时将数组的大小增加一倍。2.正是因为数组的实现,使得printList以线性时间来执行,而findkth甚至是通过常数时间。最不济的是插入和删除了,如果位置不好,比如说在0号位置插入...

2015-05-07 22:14:16

阅读数 2088

评论数 0

提示
确定要删除当前文章?
取消 删除