数据结构
be-myself-lcp
这个作者很懒,什么都没留下…
展开
-
单链表找环
15年腾讯的实习生招聘笔试题出现了这个经典问题:在只知道链表头指针的情况下,怎么判断链表中是否存在环。如果有环,判断环有多大,环的入口节点在哪里。对这几个问题,整理了一下网友提供的思路,自己动手实现了一下。首先,判断环的存在。用两个指针,分别以一次走一步和一次走两步的速度遍历单链表,若有环,两指针肯定会在环中相遇,若没有,快指针会先遍历到NULL跳出。bool findc(node*h原创 2015-05-27 16:18:20 · 513 阅读 · 0 评论 -
单链表反转的实现
作为半路出家的码农,前段时间去试了下程序猿行业水的深浅,参加了几家互联网公司实习生的笔面试,然后就有问到这个问题:单链表反转。总结了下实现的方法,根据是否改变原链表结构,主要分出两个方法:一是原地反转,二是新建链表实现原元链表的反转链表。前者主要是实现思路是从第二个节点开始不断把每个节点换插到头指针指向的地方,直到尾节点。下面是我的具体实现代码:node*reverselocal(原创 2015-05-26 16:56:31 · 578 阅读 · 0 评论 -
二叉树
概念 二叉树常被用于实现二叉查找树和二叉堆。 二叉树的每个结点至多只有二棵子树(不存在度大于2的结点),二叉树的子树有左右之分,次序不能颠倒。二叉树的第i层至多有2^{i-1}个结点;深度为k的二叉树至多有2^k-1个结点;对任何一棵二叉树T,如果其终端结点数为n_0,度为2的结点数为n_2,则n_0=n_2+1。 一棵深度为k,且有2^k原创 2015-05-28 20:01:20 · 392 阅读 · 0 评论 -
二叉排序树的C++实现
最近复习了一下C++语言,复习的过程中顺带重温了下数据结构的一些内容,一石二鸟呀!下面是类模板实现二叉排序树。 先定义节点类型和二叉树类型:templateclass BinaryTree;template //节点类的定义class Node{private: Node*lchild, *rchild; T info; public: Node()原创 2015-06-10 16:23:54 · 9240 阅读 · 0 评论 -
删除给定数组中的指定元素
最近想起了一个题:删除一个给定数组中的指定元素,要删除后还是一个连续分布的数组,也就是删除过程中要做相邻移位。曾经见到一个非常简洁的做法,不过怎么都想不起来了。自己做了一个,希望有兴趣的朋友能给出更好的做法。以下是我自己的实现函数,对给定数组a[n],删除值为x的元素,返回值为删除后数组的长度。int csa(int a[],int n,int x){ int i=0,j=0,k=0;原创 2016-03-30 21:00:48 · 3218 阅读 · 0 评论