数据结构
LM_18391680291
这个作者很懒,什么都没留下…
展开
-
顺序表
顺序表 概念:顺序表是用一段连续物理地址依次存储数据结构元素的线性结构,一般用数组来存储,在数组上进行增删查改。 顺序表分类: 静态顺序表:使用定长数组存储 动态顺序表:使用动态开辟的数组存储 //静态顺序表 #define N 5 typedef int SLDataType; typedef struct SeqList { SLdataType array[N];// 定长数组 ...原创 2019-04-24 16:34:35 · 350 阅读 · 0 评论 -
括号匹配问题
给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。 来源:https://leetcode-cn.com/problems/valid-parentheses 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 注意空字符串可被认为是有效字符串。 分析 利用栈后进先出的特点 ...原创 2019-07-21 14:46:58 · 177 阅读 · 0 评论 -
链表带环问题
给定一个链表,判断链表中是否有环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。 来源:https://leetcode-cn.com/problems/linked-list-cycle 分析 考虑链表为空,链表为一个结点时的特殊情况 链表只有一个节点时,它的next指针会不会指向自身 利用快慢...原创 2019-07-05 19:20:04 · 274 阅读 · 0 评论 -
查找单链表相交的第一个结点
编写一个程序,找到两个单链表相交的起始节点。 题目来源:https://leetcode-cn.com/problems/intersection-of-two-linked-lists 注意: 如果两个链表没有交点,返回 null. 在返回结果后,两个链表仍须保持原有的结构。 可假定整个链表结构中没有循环。 程序尽量满足 O(n) 时间复杂度,且仅用 O(1) 内存。 ...原创 2019-07-05 18:22:31 · 302 阅读 · 0 评论 -
链表的回文结构
对于一个链表,请设计一个时间复杂度为O(n),额外空间复杂度为O(1)的算法,判断其是否为回文结构。 给定一个链表的头指针A,请返回一个bool值,代表其是否为回文结构。保证链表长度小于等于900。 ...原创 2019-07-04 19:46:56 · 82 阅读 · 0 评论 -
复杂链表的复制
给定一个链表,每个节点包含一个额外增加的随机指针,该指针可以指向链表中的任何节点或空节点。要求返回这个链表的深拷贝。原创 2019-07-13 18:26:44 · 98 阅读 · 0 评论 -
分割链表
以给定值x为基准将链表分割成两部分,所有小于x的结点排在大于或等于x的结点之前 /* struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) {} };*/ class Partition { public: ListNode* partition(...原创 2019-06-28 20:40:05 · 287 阅读 · 0 评论 -
合并两个有序链表,形成新的有序链表
将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 题目来源:(LeetCode):https://leetcode-cn.com/problems/merge-two-sorted-lists 示例: 输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4 题目分析: 任意一...原创 2019-06-27 19:36:26 · 1199 阅读 · 3 评论 -
链表入环的第一个结点
给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。 说明:不允许修改给定的链表。 来源:https://leetcode-cn.com/problems/linked-list-cycle-ii 题目分析: 考虑链表为空,且...原创 2019-07-08 15:59:27 · 771 阅读 · 0 评论 -
删除链表中的重复出现的结点,留下只出现一次的结点
在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5 题目来源:牛客网https://www.nowcoder.com/practice/fc533c45b73a41b0b44ccba763f866ef?tpId 题目分析: 有序链...原创 2019-06-23 17:36:00 · 345 阅读 · 0 评论 -
返回单链表的中间结点
给定一个带有头结点 head 的非空单链表,返回链表的中间结点。 如果有两个中间结点,则返回第二个中间结点。 题目来源于领扣:https://leetcode-cn.com/problems/middle-of-the-linked-list/description/ 示例 1: 输入:[1,2,3,4,5] 输出:此列表中的结点 3 (序列化形式:[3,4,5]) 返回的结点值为 3 。 (测评...原创 2019-06-22 19:47:06 · 439 阅读 · 0 评论 -
反转一个链表
反转一个单链表 题目源于领扣:https://leetcode-cn.com/problems/reverse-linked-list/description/ 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 进阶: 你可以迭代或递归地反转链表。你能否用两种方法解决这道题 题目分析 ...原创 2019-06-22 18:01:49 · 379 阅读 · 0 评论 -
单链表的倒数第K个结点
输入一个单链表,输出它的的倒数第K个结点 题目来源:牛客网https://www.nowcoder.com/practice/529d3ae5a407492994ad2a246518148a?tpId 题目分析: 因为是单链表,所以只能从前往后,不能从后往前。一个结点为n的链表它的倒数第k个结点,可以发现是正数的n-k+1个结点。 特别注意 当链表为空的情况 当k大于链表的总结点数 当k=0时,...原创 2019-06-26 09:58:12 · 135 阅读 · 0 评论 -
删除链表指定val值的所有元素
删除链表中等于给定值 val 的所有节点。 输入: 1->2->6->3->4->5->6, val = 6 输出: 1->2->3->4->5 分析: 当链表为空时,返回NULL 当链表不为空时 1.当前被删除节点是头节点(包含只有一个节点的情况) 2.被删除节点不是头节点 删除元素过程 如图: 注意: 当删除的节点就是头结点时...原创 2019-06-20 21:28:05 · 998 阅读 · 0 评论 -
带头双向循环链表
带头双向循环链表 双向带头循环链表通常以单独的数据结构出现,虽然结构比单链表复杂,但代码实现比单链表要简单一些。 实现双向带头循环链表 typedef int LTDataType; typedef struct ListNode { LTDataType data; struct ListNode* next; struct ListNode* prev; }ListN...原创 2019-06-20 11:53:32 · 241 阅读 · 0 评论 -
顺序表—冒泡排序,二分查找,删除相同元素
顺序表 概念:顺序表是用一段连续物理地址依次存储数据结构元素的线性结构,一般用数组来存储,在数组上进行增删查改。 顺序表分类: 静态顺序表:使用定长数组存储 动态顺序表:使用动态开辟的数组存储 //静态顺序表 #define N 5 typedef int SLDataType; typedef struct SeqList { SLdataType array[N];// 定长数组 ...原创 2019-05-06 15:19:23 · 557 阅读 · 0 评论 -
单链表
单链表 概念:链表是一个物理存储结构非连续,非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。 链表不单这一种,还分为带头和不带头,单向和双向,循环和非循环,组合下来一共8种。 但常用的就是单链表和带头双向循环链表 上图中的例子就是一个单链表 无头单向非循环链表:结构简单,一般不会用来单独存储数据。实际中更多的是作为其他数据的子结构。 带头双向循环链表:结构最复杂,一般用...原创 2019-05-13 18:51:52 · 159 阅读 · 0 评论 -
栈
栈的概念: 栈是一种特殊的线性表,只允许固定一端进行插入或者删除操作,进行数据操插入和删除的一端称为栈顶,另一端称为栈底。栈中的数据遵循后进先出的原则。 压栈:栈的插入操作,也叫做进栈/入栈 出栈:栈的删除操作,出数据也在栈顶 栈的实现 一般栈可以由数组和链表实现,但是相对而言数组结构实现栈会更优一点,因为数组在尾部插入删除数据效率更高。 静态栈 不支持动态增长,大小固定 typedef in...原创 2019-07-21 18:46:39 · 111 阅读 · 0 评论