码迷,mamicode.com
首页 >  
搜索关键字:尾结点    ( 122个结果
选择排序
选择排序(假设递增排序) 每次选取从当前结点到末尾结点中最小的一个与当前结点交换,每一轮固定一个元素位置。 时间复杂度O(n^2),空间复杂度O(1)。下面的示例代码以带头结点的链表为存储结构: #include #include #define Elemtype double struct Node { Elemtype data; struct Node *next; }; void...
分类:编程语言   时间:2014-10-10 21:50:04    阅读次数:225
Zoj 3535 Gao the String II (AC自动机+dp)
题目大意: 用集合A中的串构造出一个串,使之让更多的setB中的串成为他的子串。 思路分析: 和 Codeforces 86C 差不多。 不过这里是要用A中的构造。 先用A 和 B的串构造一个自动机。然后对于A集合的尾结点给出一个最大后缀匹配,对于B集合的尾结点给一个权值。 dp[i][j][k] 表示已经构造出来了一个长度为i的串,现在走到了自动机的j结点,i长度后面有k...
分类:其他好文   时间:2014-10-03 17:13:14    阅读次数:227
Leetcode 链表 Linked List Cycle II
题意:给定一个单链表,判断该链表中是否存在环,如果存在,返回环开始的节点 思路: 1.定义两个指针,快指针fast每次走两步,慢指针s每次走一次,如果它们在非尾结点处相遇,则说明存在环 2.若存在环,设环的周长为r,相遇时,慢指针走了 slow步,快指针走了 2s步,快指针在环内已经走了 n环, 则有等式 2s = s + nr => s = nr 3.在相遇的时候,另设一个每次走一步的慢指针slow2从链表开头往前走。因为 s = nr,所以两个慢指针会在环的开始点相遇 复杂度:时间O(n) struct...
分类:其他好文   时间:2014-08-30 23:07:40    阅读次数:187
14. Reverse Linked List II
总结:其实就是反转链表。不过是反转中间一部分。要注意的是保存第一个结点的前继的指针; 若第一个结点是头结点,注意反转子串的尾结点变为头结点。
分类:其他好文   时间:2014-08-25 01:07:43    阅读次数:198
队列(二)——队列的链表实现方式
1.队列的单向链表的实现方法 return只可以返回一个值,单向循环链表来实现队列的时候可以只保留一个指针,因为保留rear指针能够很方便的表示出front指针,所以保留rear指针。 另外由于链表的第一个结点处理比较特殊,所以在初始化的时候需要单独处理。链表实现的队列思想也是第一个单元作为头结点,不存放数据,rear指针指向的总是尾结点(在循环链表中也就是头结点的上一个结点)。 2.实现方...
分类:其他好文   时间:2014-08-04 21:47:48    阅读次数:233
Swap Nodes in Pairs
问题:交换相邻的两个结点分析:建立新链表每次插入ret->next后在插入ret,需要在判断下若最后只有一个结点不需要交换,注意每次交换了结点要把尾结点的下一个指向空class Solution {public: ListNode *swapPairs(ListNode *head) { ...
分类:其他好文   时间:2014-08-02 18:16:13    阅读次数:178
Remove Duplicates from Sorted List
问题:将有序链表中的重复元素删除分析:由于有序,所以p结点是否重复只需要和它的前一节点比较是否相等就可以了,我们可以定义一个helper新头结点链表 将p结点与新链表的尾结点比较,若不相等则加入新链表中。class Solution{public: ListNode *deleteDup...
分类:其他好文   时间:2014-08-02 17:47:33    阅读次数:210
给定链表的头指针和一个结点指针,在O(1)时间删除该结点
题目:给定链表的头指针和一个结点指针,在O(1)时间删除该结点。具体思路:把头结点的数据直接copy到要删除的结点处,然后头指针向后移动一个结点,再free掉原来的头指针指向的结点,这样等于把要删除的结点删除了。当链表只有一个结点或者要删除的结点是头结点或尾结点时,这种方法也是成立的,所以不需要做特...
分类:其他好文   时间:2014-07-25 13:54:31    阅读次数:204
【C++】List类学习
1.关于本文 文中描述的是一个学习List类过程中写的程序,程序中进行了以下步骤 1)创建list<string> 2)调用函数push_front和push_back添加元素 3)调用迭代器遍历list 4)调用函数front和back查找首尾结点 5)调...
分类:编程语言   时间:2014-07-22 09:03:06    阅读次数:359
每天一个小算法(4)----在O(1)时间删除指定结点
O(1)时间内删除结点的思路只能是复制该结点下一个结点的数据,然后删除该结点的下一个结点,来等效删除此结点。需要注意的地方是删除头结点和尾结点的处理。 1 #include 2 #include 3 #include 4 typedef struct Node 5 { 6 int da...
分类:其他好文   时间:2014-06-15 17:05:10    阅读次数:107
122条   上一页 1 ... 10 11 12 13 下一页
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!