#include #include typedef struct Node { int data; struct Node *next; }Node; Node* CreatList(int n) { Node *head,*p,*q; head=(Node*)malloc(sizeof(Node)... ...
分类:
其他好文 时间:
2019-02-01 23:02:30
阅读次数:
258
1.判断一个单链表是否有环 借助STL里的 set ,java里用hashset是一样的,不需要排序,碰到重复key说明有环。 不借助set也可以通过另一种方式: 一个正常指针一次走一个,一个快指针一次走两个。 如果链表有环,快指针一定会和慢指针相遇,相遇的时候,把快指针扔回头结点,然后两个指针都每 ...
分类:
其他好文 时间:
2019-02-01 23:02:01
阅读次数:
196
PS:邻接表,存储方法跟树的孩子链表示法相类似,是一种顺序分配和链式分配相结合的存储结构。如这个表头结点所对应的顶点存在相邻顶点,则把相邻顶点依次存放于表头结点所指向的单向链表中。图的邻接表储存方式相对于邻接矩阵比较节约空间,对于邻接矩阵需要分别把顶点和边(顶点之间的关系)用一维数组和二维数组储存起 ...
分类:
编程语言 时间:
2019-01-28 20:10:19
阅读次数:
239
c++ //================================================================== // 《剑指Offer——名企面试官精讲典型编程题》代码 // 作者:何海涛 //==================================== ...
分类:
其他好文 时间:
2019-01-28 16:09:42
阅读次数:
156
数据结构 链队列的实现 1 链队列的定义 队列的链式存储结构,其实就是线性表的单链表,只不过它只能尾进头出而已, 我们把它简称为链队列。 为了操作上的方便,我们将队头指针指向链队列的头结点,而队尾指针指向终端结点,如下图所示。 空队列时,front和rear都指向头结点,如下图所示。 链队列的结构为 ...
分类:
编程语言 时间:
2019-01-28 00:54:46
阅读次数:
334
实际在编程的时候免不了要进行调试,就要用到main函数。 对于solution3,可以为它写一个main函数,调用removeElements方法,就需要创建一个由ListNode组成的链表,但是对于我们现在的代码是没有链表创建功能的,所以根本不可能进行调试,在这里同学们完全可以自己写一个函数来创建 ...
分类:
其他好文 时间:
2019-01-27 19:31:07
阅读次数:
198
题目: 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。 示例: 思路: 浅显的思路就是遍历一遍取长度,然后再遍历一遍找到位置删除,然而这里要遍历两次,虽然时间复杂度为O(n)。进阶的想法是使用双指针,对的,又是双指针,只要保证两个指针的间隔为n,之后让前一个指针一直到末尾,两个指 ...
分类:
其他好文 时间:
2019-01-27 16:25:00
阅读次数:
176
lectcode 203. 移除链表元素 删除链表中等于给定值 val 的所有节点。 示例: 方法1 不采用虚拟头结点 其实 等价于 2.采用虚拟头结点 ...
分类:
其他好文 时间:
2019-01-27 13:00:50
阅读次数:
209
链表设置虚拟头结点dummyhead,这样对链表来说,第一个元素就是dummyhead的next所对应的节点元素,而不是dummyhead所对应的节点元素。 dummyhead位置所对应的元素是根本不存在的,这只是未来我们编写逻辑方便而出现的一个虚拟头结点。 dummyhead就是索引为0的这个位置 ...
分类:
其他好文 时间:
2019-01-25 22:45:48
阅读次数:
1797
链式存储结构最大的好处就是没有空间的限制,可以通过指针指向将结点像以链的形式把结点链接,我们熟悉的线性表就有链式存储结构。 当然,栈同样有链式存储结构,栈的链式存储结构,简称链栈。 从图片可以看到,和单链表很像,拥有一个头指针top,又称作栈顶指针,所以此时就不再需要单链表里面的头结点了。 对于链栈 ...
分类:
编程语言 时间:
2019-01-23 00:16:58
阅读次数:
209