单链表
Xzg_2017
这个作者很懒,什么都没留下…
展开
-
合并两个排序的单链表--递归与非递归实现
链表结构定义如下: typedef int ElemType; typedef struct LNode { ElemType data; LNode *next; }LNode; 1,递归实现合并两个升序的单链表 LNode *Merge(LNode *phead1, LNode *phead2) { if(phead1 == NULL) ...原创 2018-07-22 01:48:02 · 395 阅读 · 0 评论 -
O(1)的时间复杂度下删除单链表中的节点
1,基本思路 在单链表中如果要删除一个节点,需要通过头结点找到该节点的前驱节点,然后让该节点的前驱节点指向它的后继节点,然后free点当前节点就实现了单链表的删除,但是这样的删除需要遍历到当前节点的前驱节点,时间复杂度自然而然就成了O(n),那么如何O(1)删除呢? 如果想要O(1)删除节点,就不能删除当前节点,因为不知道当前节点的前驱节点,删除最后单链表的链...原创 2018-07-22 12:00:30 · 2103 阅读 · 1 评论 -
查找倒数第K个节点
1,实现思路 查找倒数第K个节点 第一种思路: 倒数第K个节点也就是正数第N-K+1个节点吗,我们可以将链表遍历一遍求出链表的长度N,然后在遍历到第N-K+1个节点,就实现了查找倒数第K个节点。 但是这种思路需要将链表遍历两遍,那么有没有遍历一遍的方法呢? 第二章思路:可以定义两个指针,首先第一个指针指向头节点不动,第二个...原创 2018-07-22 12:34:33 · 922 阅读 · 0 评论 -
单链表是否有环
1,实现思路 如何判断一个单链表是否有环? 我们可以定义两个指针,第一个指针一次遍历一步,第二个指针一次遍历两步,如果第二个指针指向NULL,则单链表无环,如果第二个指针与第一个指针相遇,则说明有环。 2,代码实现 LNode* HasCircle(LNode *phead) { if(phead ==...原创 2018-07-22 13:32:02 · 290 阅读 · 0 评论