题目:给定单向链表的头指针和一个结点指针,定义一个函数在O(1)时间删除该结点。分析:删除结点可以从链表的头结点开始顺序遍历,发现某个结点的next指向要删除的结点时,将该结点的next指向要删除的下一个结点。但是基于这种思路,得到的时间复杂度是O(n)。删除结点只是让这..
分类:
其他好文 时间:
2016-02-19 14:33:06
阅读次数:
193
问题:一个字符串S(临时仅仅考虑小写字母),选择S中包括26种英文字母的最短子串。假设不包括则返回空字符 分析:双指针,动态维护一个区间。尾指针不断往后扫,当扫到有一个窗体包括了全部26种英文字母的字符串后。再收缩头指针。直到不能再收缩为止。最后记录全部可能的情况中窗体最小的。 代码演示样例: #i
思路:如果开始有两个指针指向头结点,一个走的快,一个走的慢,如果有环的话,最终经过若干步,快的指针总会超过慢的指针一圈从而相遇。 如何计算环的长度呢?可以第一次相遇时开始计数,第二次相遇时停止计数。 如何判断环的入口点?碰撞点p到连接点的距离=头指针到连接点的距离,因此,分别从碰撞点、头指针开始.....
分类:
其他好文 时间:
2016-01-22 21:13:35
阅读次数:
114
假设单链表数据结构定义如下: struct ListNode { int val; ListNode *next; ListNode(int x) : val(x), next(NULL) {} };单链表有一个头指针指向第一个结点,最后一个结点指向NULL一、最容...
分类:
其他好文 时间:
2016-01-21 23:44:31
阅读次数:
200
题目大意:不同的人在不同的队伍里,插入链表的时候假设这个链表里有他的队友,就把它放到最后一个队友的最后。假设没有队友,就把它放到整个链表的最后面。出链表的时候把第一个人拿出来。思路分析:要模拟这个链表就要记录这整个链表中的队伍存在的情况。所以要再开一个链表的头指针和尾指针,在整个大的链表中再模拟小区...
分类:
其他好文 时间:
2016-01-18 22:50:54
阅读次数:
404
单链表的必要条件:头节点的head,以及尾指针指向null; 1头结点首先,不要被以下三个词组弄混了:链表头:数据内容为第一个元素的结点。头指针:指向头结点元素的指针。头结点:数据内容无效,其指针是头指针。一句话描述为:头指针是指向头结点的指针,头结点是指向链表头的结点。对于一个链表来说,头指针是一...
分类:
其他好文 时间:
2016-01-15 11:04:34
阅读次数:
160
数据结构:单向链表。指针操作,注意Null Pointer的情况 以及链表头指针的操作代码:/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; *...
分类:
其他好文 时间:
2016-01-10 10:23:43
阅读次数:
107
小猪的数据结构辅助教程——3.2 栈与队列中的链栈标签(空格分隔): 数据结构1.本节引言:
嗯,本节没有学习路线图哈,因为栈我们一般都用的是顺序栈,链栈还是顺带提一提吧,
栈因为只是栈顶来做插入和删除操作,所以较好的方法是将栈顶放在单链表的头部,栈顶
指针与单链表的头指针合二为一~所以本节只是讲下链栈的存储结构和基本操作!
2.链栈的存储结构与示意图存储结构:typedef str...
分类:
其他好文 时间:
2016-01-02 16:33:01
阅读次数:
172
逻辑: 集合 线性表 树 图物理: 顺序 链式typedef struct Node{ ElmetType data; struct Node *next;}Node;头指针 : 链表的起始尾指针 : 链表的结束判空 : 头指针为空头结点 不存任何节点 head->next == NULL尾部插.....
分类:
其他好文 时间:
2015-12-24 22:03:27
阅读次数:
212
如果不考虑奇数和奇数,偶数和偶数之间的相对位置不变。那么只需要两个指针分别指向数组的头和尾,依次比较。1. 如果头指针指向的数组位置为奇数,那么就判断尾指针指向的数组位置的奇偶性。如果是奇数,则头指针后移一个位置,如果是偶数,则尾指针前移一个位置。2. 如果头指针指向的数组位置为偶数,那么就判断尾指...
分类:
编程语言 时间:
2015-12-18 16:15:30
阅读次数:
255