摘要: 今天课上实验课,遇到一道题目,需要查找一个数组中出现次数最多的元素和次数,并且输出。第一次用struct模拟字典,十分麻烦而且复杂度是O(n\ n)。其实,运用转化的思想,可以先将其排序,然后再查找即可,时间复杂度之后只有O( n\ log_2(n))。 题目是这样的: 某小镇要票选镇长,得票最高者 阅读全文
posted @ 2017-06-14 21:44 AsuraDong 阅读(2423) 评论(0) 推荐(0) 编辑
摘要: 双向链表和双向循环链表 和单向链表相比,多了一个前驱结点。如果他为空,那么next和prior都指向自己。而对于双循环链表,只需要最后一个元素的next指向head next,head next的prior指向最后一个节点即可。 插入操作 新节点s插入链表,s next给p结点,s prior给p 阅读全文
posted @ 2017-06-14 16:27 AsuraDong 阅读(7005) 评论(0) 推荐(0) 编辑
摘要: 判断单链表是否有环 假设有一个含环链表:1 2 3 4 5 6 3(6又连接到3,形成一个环) 1. 使用p、q两个指针,p总是向前走,但q每次都从头开始走,对于每个节点,看p走的步数是否和q一样。当p从6走到3时,用了6步;此时q从head出发,则只需两步就到3,因而步数不等,出现矛盾,存在环。而 阅读全文
posted @ 2017-06-14 00:03 AsuraDong 阅读(612) 评论(0) 推荐(0) 编辑
摘要: 尾指针及其简单应用 循环链表如果拿到最后结点,若没有尾指针(rear),那么需要O(n)的时间。如果有的话,只需要O(1)的时间。 如果有两个链表,需要将他们连接,拥有尾指针只需要O(1)的时间复杂度。 此时,判断循环链表是否为空的方法:rear是否等于rear next。 一道题目:将两个线性表A 阅读全文
posted @ 2017-06-14 00:02 AsuraDong 阅读(1179) 评论(0) 推荐(0) 编辑