数据结构与算法
阳光Cherry梦
这个作者很懒,什么都没留下…
展开
-
二叉树常用基本操作
#include<iostream> using namespace std; /* 测试使用二叉树使用先序遍历输入字符串为ABC##DE#G##F### */ typedef char ElemType; typedef struct BiTNode { ElemType data; struct BiTNode *lchild; struct BiTNode *rchild; } BiTNode, *BiTree; void CreateTree(BiTree &T) { .原创 2021-05-18 15:58:09 · 306 阅读 · 0 评论 -
一些逻辑问题思考
1)有12个乒乓球,其中有一个不合规格,但不知是轻是重。要求用天平称三次(没的砝码),把这个坏球找出来。 2)一天清晨,人们发现一家商店的保险柜被撬,夜里守店的 老头被杀死,抛人河中。尸体打捞上来后,一个笨叫的警察在 死者衣袋里发现了一块走时很精确的高级怀表,但已停止运 行。无疑,表针所指示的时间是一个非常重要的线索。可是, 那警察忘记了要保护现场的守则,竟把怀表的指针拨弄了几 圈。 侦探长转载 2013-01-02 19:12:02 · 920 阅读 · 0 评论 -
环形缓冲区
循环缓冲区在一些竞争问题上提供了一种免锁的机制,免锁的前提是,生产者和消费 都只有一个的情况下,否则也要加锁。下面就内核中提取出来,而经过修改后的fifo进 行简要的分析。 先看其只要数据结构: struct my_fifo { unsignedchar *buffer;/* the buffer holding the data*/ unsignedint si转载 2013-04-24 11:31:35 · 932 阅读 · 0 评论 -
微软的22道数据结构算法面试题(含答案)
1、反转一个链表。循环算法。 1 List reverse(List l) { 2 if(!l) return l; 3 list cur = l.next; 4 list pre = l; 5 list转载 2015-03-02 21:25:43 · 873 阅读 · 0 评论 -
算法2-足球比赛出线问题
足球比赛,一个小组有8支球队进行单循环赛,胜者积3分,平则算法同积1分,负则不积分,规定积分最高的4支球队出线,则出线至少需要多少分?未出线最多可能有多少分? 思路: 循环赛的概念是每一支球队会与其他所有球队各进行一场比赛。8支球队共进行8*7/2=28场比赛。 1、出线至少需要多少分? 赢得比赛积分最快,打平积分增长慢,输掉比赛积分不变。如果想以最少的积分赢,着眼点应转载 2016-07-24 20:24:04 · 3907 阅读 · 0 评论 -
如何检查一个单向链表上是否有环?
1, 最简单的方法, 用一个指针遍历链表, 每遇到一个节点就把他的内存地址(java中可以用object.hashcode())做为key放在一个hashtable中. 这样当hashtable中出现重复key的时候说明此链表上有环. 这个方法的时间复杂度为O(n), 空间同样为O(n). 2, 使用反转指针的方法, 每过一个节点就把该节点的指针反向: Boolean rever转载 2016-07-29 09:03:10 · 463 阅读 · 0 评论 -
稳定排序和不稳定排序
这几天笔试了好几次了,连续碰到一个关于常见排序算法稳定性判别的问题,往往还是多选,对于我以及和我一样拿不准的同学可不是一个能轻易下结论的题目,当然如果你笔试之前已经记住了数据结构书上哪些是稳定的,哪些不是稳定的,做起来应该可以轻松搞定。本文是针对老是记不住这个或者想真正明白到底为什么是稳定或者不稳定的人准备的。 首先,排序算法的稳定性大家应该都知道,通俗地讲就是能保证排序前2个相等的转载 2017-04-17 17:29:19 · 466 阅读 · 0 评论