作用: 把值插入到链接头部 作用: 返回并删除链表尾元素 作用: 返回链表中[start ,stop]中的元素 规律: 左数从0开始,右数从-1开始 作用: 从key链表中删除 value值 注: 删除count的绝对值个value后结束 Count>0 从表头删除 Count<0 从表尾删除 作用 ...
分类:
其他好文 时间:
2016-05-16 20:00:22
阅读次数:
188
给定单向链表的头指针和一个结点指针,定义一个函数在O(1)时间删除该结点。因为要求时间复杂度为O(1),所以肯定不能遍历链表,那样的话时间复杂度就是O(N)了;可以想到,其实要求删除该结点,真正的目的并不是要将结点的数据包括结点所占的内存都给删除,只是想让数据消失就可..
分类:
其他好文 时间:
2016-05-09 22:17:45
阅读次数:
249
思路:时间复杂度要求为O(1),已知要删除的节点,可以找到该节点的下一个节点,把下一个节点的相关信息复制到要删除的节点上,删除下一个节点,可以达到题目要求。注意:删除尾节点时需要遍历一遍,删除头结点时,需要把头结点移到下一个节点。#include<stdio.h>
#incl..
分类:
其他好文 时间:
2016-05-09 07:21:52
阅读次数:
134
题目:给定单向链表的头指针和一个结点指针,定义一个函数在O(1)时间删除该结点。链表结点与函数的定义如下:
typedef struct ListNode
{
int val;
struct ListNode *p_next;
}NODE, *PNODE;
void delete_node(PNODE *pListHead, PNODE pToDeleted);
一般来说,我们拿到一个删...
分类:
其他好文 时间:
2016-05-06 12:13:26
阅读次数:
133
题目 给定一个单链表中的表头和一个等待被删除的节点(非表头或表尾)。请在在O(1)时间复杂度删除该链表节点。并在删除该节点后,返回表头。 思路 因为O(1)内删除所以 不能从头节点去遍历找他的前驱节点 因为给的是待删除节点, 所以如果删除下一个节点可以在o(1)复杂度完成 所以 把当前节点覆盖成下一 ...
分类:
其他好文 时间:
2016-05-02 13:01:21
阅读次数:
167
链表的结构:链表在空间是不连续的,包括:
数据域(用于存储数据)
指针域(用于存储下一个node的指针) 单项链表的代码实现:节点类
构造函数
数据域的get,set方法
指针域的get,set方法
代码:public class Node {
Object element; //数据域
Node next; //指针域
//构造方法
public Node(Obj...
分类:
编程语言 时间:
2016-04-29 15:22:02
阅读次数:
207
题目:给定单项链表的头指针和一个结点指针,定义一个函数在o(1)的时间删除该结点,链表的定义如下: struct ListNode{ int value; ListNode* next; }; 函数定义:void DeleteNode(ListNode** PListHead,ListNode* p ...
分类:
其他好文 时间:
2016-04-25 06:34:03
阅读次数:
81
思路:第一时间想到的肯定是通过添加计数器解决这个问题,但是问题产生了,链表具有单向性,统计总数,还是计算当前数目都在效率上面很吃亏。 借用快慢指针的思想。可以安排两个同速指针,但是他们存在先后顺序,就可以解决这个问题。 ...
分类:
其他好文 时间:
2016-04-23 10:11:28
阅读次数:
178
终于碰见了和数据结构相关的题目了,这也意味着复杂度在增加。来看看这道题吧,删除链表的倒数第k个节点,我们有必要先找出链表的长度然后再确定倒数第k个节点吗?我觉得这是没必要的。因为我们的方法比这样更巧,听起来高大尚一些。解题思路以及注意事项如下:
1.我采用的是两个指针,一快一慢,快的先走k+1步,然后快指针和慢指针一起走,直到快指针走到尾
2.为什么要快指针要走k+1步呢?我们仔细想想一下,我...
分类:
其他好文 时间:
2016-04-22 09:27:51
阅读次数:
145