给定一个单链表,求其是否可回读,即,正着读和倒着读一样。Input: 1->2->2->1Output: true 思路:一、遍历链表,将其节点的值存入动态数组中,最后对数组头尾的值遍历判别。 bool isPalindrome(ListNode* head) { vector<int> tmp; ...
分类:
其他好文 时间:
2020-05-12 16:57:00
阅读次数:
62
1.单链表实现 slist.h 1 #ifndef _SLIST_H 2 #define _SLIST_H 3 4 typedef struct _slist_node 5 { 6 struct _slist_node *p_next; /* 指向下一个结点的指针 */ 7 }slist_node_ ...
分类:
其他好文 时间:
2020-05-12 09:35:44
阅读次数:
49
一、栈 栈(stack),有些地方称为堆栈,但是不能叫堆,是一种容器,可存入数据元素、访问元素、删除元素,它的特点在于只能允许在容器的一端(称为栈顶端指标,英语:top)进行加入数据(英语:push)和输出数据(英语:pop)的运算。 没有了位置概念,保证任何时候可以访问、删除的元素都是此前最后存入 ...
分类:
编程语言 时间:
2020-05-11 01:13:09
阅读次数:
78
周数 学习时间 代码行 学习内容 第八周 6h 200 数据结构线性表的删除,查找,删除和操作系统内容 第九周 6h 200 用头插法建立一个单链表,它的查找插入删除和双链表和循环单链表,双向循环链表 第十周 8h 300 完成了循环双向链结表以及打印出反转循环双向链结表 第十二周 第十三周 第十四 ...
分类:
其他好文 时间:
2020-05-10 19:35:17
阅读次数:
69
1.复制额外的空间,然后头插法 2.原地逆置,本质上是将指针反转达到逆置的效果。 假设pre、p和r指向3个相邻的结点,如上图。*pre之前的结点的指针都已经调整完毕,它们的next指针都指向其原前驱结点。 现在令*p结点的next域指向*pre结点,注意到一旦调整指针的指向后,*p的后继结点的链就 ...
分类:
其他好文 时间:
2020-05-09 16:58:43
阅读次数:
47
双向链表 原理 单链表在遍历其每一个元素的过程中,一旦通过某个节点的next进入了下一个节点之后,就没有办法再回到上一个节点了,单链表只能往前走,而不能往后,这样子显然非常的不方便。解决的办法是我们在单链表的基础上给每一个元素附上两个指针域,一个是指向下一个节点的next,另一个是指向下一个节点的p ...
分类:
系统相关 时间:
2020-05-08 10:17:29
阅读次数:
98
何为跳表? 跳表是一个随机化的数据结构,实质就是一种可以进行二分查找的有序链表。 跳表在原有的有序链表上面增加了多级索引,通过索引来实现快速查找。 跳表不仅能提高搜索性能,同时也可以提高插入和删除操作的性能。 跳表详解 有序链表 考虑一个有序链表,我们要查找3、7、17这几个元素,我们只能从头开始遍 ...
分类:
其他好文 时间:
2020-05-06 13:52:50
阅读次数:
61
一、已知线性表中元素以值递增有序排列,并以单链表作存储结构。试写一高效的算法,删除表中所有值大于mink且小于maxk的元素(若表中存在这样的元素)同时释放被删结点空间,并分析你的算法的时间复杂度(注意:mink和maxk是给定的两个参变量,它们的值可以和表中的元素相同,也可以不同)。 答: 本题对 ...
分类:
编程语言 时间:
2020-05-05 19:53:28
阅读次数:
178
终于把学的单链表塞进贪吃蛇里的. 相比于上一篇的数组,链表的理解程度可能高一些. 上一篇的链接 上代码: #include <stdio.h> #include <stdlib.h> #include <time.h> #include <conio.h> #include <windows.h> ...
分类:
其他好文 时间:
2020-05-04 15:43:24
阅读次数:
50
不带头结点的单链表的插入操作和带头结点的插入操作基本相同,只是需要把插在第一位的情况单独拎出来考虑,即单独讨论 i = 1 的情况。 if ( i == 1 ) { LNode *s = ( LNode * ) malloc ( sizeof ( LNode * ) ); //申请一个结点空间 s ...
分类:
其他好文 时间:
2020-05-04 15:24:05
阅读次数:
95