一:题目:给定单向链表的头指针和一个结点指针,定义一个函数在O(1)时间删除该结点。链表结点与函数的定义例如以下: struct ListNode { int m_nValue; ListNode* m_pNext; }; void delete_note(ListNode *head,ListNo ...
分类:
编程语言 时间:
2017-06-04 21:16:56
阅读次数:
219
不带头结点代码传送门:http://www.cnblogs.com/SimonKly/p/6890287.html 可以从代码中看出,不带头结点的代码中插入节点的函数insert*中的参数是二级指针,因为头指针的指向可能会发生变化,需要用二级指针带回一级指针的地址。 而在带头结点的代码中在相同的插入 ...
分类:
编程语言 时间:
2017-05-22 17:45:55
阅读次数:
219
1.reverse-nodes-in-k-group(k组翻转链表)【hard】 给你一个链表以及一个k,将这个链表从头指针开始每k个翻转一下。链表元素个数不是k的倍数,最后剩余的不用翻转。 /** * Definition for singly-linked list. * public clas ...
分类:
编程语言 时间:
2017-05-22 00:16:00
阅读次数:
189
引言: 队列与栈的差别是队列是先进先出的数据结构。为了使得出入队列easy。能够引入队列头指针和队列尾指针。 分析描写叙述: 队列的结点结构。 typedef int QElemType; typedef struct QNode{ QElemType data; struct QNode *nex ...
分类:
其他好文 时间:
2017-05-14 13:57:51
阅读次数:
189
通常情况下,链接可分为单链表、双向链表和循环链表三种常用类型。 一、单链表基本操作的实现 使用链式存储结构来实现的线性表称为链表。首元结点、头结点、头指针、空指针。 1.单链表的类型定义 2.初始化操作InitLinkList(&L) 3.求表长操作listLength(&L) 4.取元素操作get ...
分类:
其他好文 时间:
2017-05-10 21:26:47
阅读次数:
188
题目描述 给定单向链表的头指针和一个节点指针,定义一个函数在O(1)时间删除该节点。 解题思路 在单向链表中删除一个节点,最常规的做法无疑是从链表的头结点开始,顺序的遍历查找要删除的节点,并在链表中删除该节点。这种思路由于需要顺序查找,时间复杂度自然就是$O(n)$了。 之所以需要从头开始查找,是因 ...
分类:
其他好文 时间:
2017-05-07 23:11:06
阅读次数:
293
创建单线性链表,常见的有头插法、尾插法创建线性链表,常见的操作有:创建链表、查找、删除、添加元素、求逆链等操作。 这里首先用头插法创建链表: //头指针唯一确定一个单链表 #define MaxSize 15 typedef int elem_type ; typedef struct linkli ...
分类:
其他好文 时间:
2017-05-03 20:26:58
阅读次数:
147
问题描述: 给定单向链表的头指针和一个结点指针,定义一个函数在O(1)时间删除该结点。链表结点的定义如下: struct ListNode{ int m_nValue; ListNode* m_pNext; }; 分析: 老规矩,先考虑最简单粗暴的方法,既然是要删除结点,那么按照之前在数据结构中总结 ...
分类:
其他好文 时间:
2017-04-24 14:04:47
阅读次数:
130
C++ 经常使用的数据结构之中的一个的链表,在我们的程序中是经常出现的了。我们学c语言的时候我就知道了 链表。開始它是基于一个机构体的。我们创建链表的时候会返回一个链表头指针,这个头指针我们往往是作为一个全局变量来处理的。我们对于链表的操作方法是都是基于这个头指针的。依据头指针去查找,插入。删除,改 ...
分类:
编程语言 时间:
2017-04-23 18:56:25
阅读次数:
142
栈是个顺序的空间结构,其主要原理是开辟一个初始的、连续的空间以供节点的插入,栈节点之间并没有逻辑上的关联,也就是说,上一个节点并没有存储下一个节点的地址,也就是指针。所以栈的清空可以直接将头指针指向尾指针所指向的,下一个节点插入将覆盖掉原来的数据。简而言之,删除一个节点是将该节点从栈中删除,而并没有 ...
分类:
其他好文 时间:
2017-04-20 21:15:12
阅读次数:
111