![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
不凡Zzz
菜是原罪
展开
-
数据结构基础-顺序表的基本操作
顺序表一般可以分为:1.静态顺序表:使用定常数组存储//静态顺序表,固定大小//typedef struct SeqList{// int array[100];// int size; //有效数据个数(也可以表示下一个可用位置的下标)//}SeqList;2.动态顺序表:使用动态开辟的数组存储//动态顺序表(程序运行期间可以控制容量的大小)typ...原创 2019-03-19 11:48:37 · 539 阅读 · 0 评论 -
数据结构基础-队列的基本操作
队列(Queue)队列规则:先进先出(First In First Out)使用单向链表来实现对列typedef struct Node{ int value; struct Node *next;} Node;typedef struct Queue{ Node *head; No...原创 2019-04-17 13:22:38 · 331 阅读 · 0 评论 -
数据结构基础-栈的基本操作
栈(Stack)栈包括两种:数据结构中的栈和内存中的栈。栈 含义 数据结构中 是一种存储方式,规则是先进后出(First In Last Out) 内存中 是一种确实存在的物理结构,在内存中用于存放函数的参数值,局部变量的值等 栈的实现:顺序表或者链表这里我用的是...原创 2019-04-17 13:14:07 · 391 阅读 · 0 评论 -
TopK-求数组中N个数据中最大的K个元素
TopK问题求解的最佳方式就是使用堆。 要求最大的K个元素,所以我们建一个有K个元素的堆(为了方便,直接将前K个值放到堆中),调整堆的形态为小堆,堆顶的元素是最小值,将数组中的每个数字和堆顶比较,如果该数大于堆顶,就把堆顶换成该数,同时使用堆的向下调整操作,将堆调整成排好序的堆,这样依次循环,最后得到的就是最大的K个值void AdjustDown(int array[],i...原创 2019-04-21 19:39:03 · 2094 阅读 · 0 评论 -
二叉树的非递归遍历(前、中、后)
前序:void PreorderNoR(Node *root){ stack<Node *> s; Node *cur = root; while(!s.empty()&&cur!=NULL){ while(cur!=NULL){ printf("%c",cur->value); s.push(cur); cur = cur-&g...原创 2019-04-08 22:02:06 · 227 阅读 · 0 评论 -
二叉树的简单遍历(前中后)
以二叉树的前中后序遍历为例(C++)。题目链接:前序:https://leetcode-cn.com/problems/binary-tree-preorder-traversal/中序:https://leetcode-cn.com/problems/binary-tree-inorder-traversal/后序:https://leetcode-cn.com/problems...原创 2019-04-02 19:26:43 · 405 阅读 · 0 评论 -
逆波兰表达式求值
leetcode.150逆波兰表达式求值根据所给的逆波兰表达式,求出表达式的值。示例1:输入: ["2", "1", "+", "3", "*"]输出: 9解释: ((2 + 1) * 3) = 9示例2:输入: ["4", "13", "5", "/", "+"]输出: 6解释: (4 + (13 / ...原创 2019-04-02 19:10:52 · 266 阅读 · 0 评论 -
用栈实现对列
leetcode- 232. 用栈实现队列相比于用队列实现栈,用栈实现队列能稍微麻烦一点。实现队列时需要两个栈来实现,左边的是出口,右边的是入口。我们将数据压入right栈,然后出栈保存,进入left,再次出栈的顺序和进入right时的顺序就是一样的。1.push(x) -- 将一个元素放入队列的尾部。/** Push element x to the back of ...原创 2019-03-27 16:46:06 · 146 阅读 · 0 评论 -
用队列实现栈
leetcode-225. 用队列实现栈使用队列实现栈的下列操作:1.push(x) -- 元素 x 入栈 void push(int x) { q.push(x); }//压栈是一样的就不用修改了2.pop() -- 移除栈顶元素 栈的栈顶是最后一个元素,按照栈的规则是FILO(先进后出),而栈的栈顶对于队列来说就是最后一个要出来...原创 2019-03-27 15:56:58 · 9961 阅读 · 0 评论 -
反转链表(分步讲解三指针法)
leetcode-206. 反转一个单链表这里我们用到的方法是三指针法。1.首先创建3个指针,分别指向头结点,头结点的前一个结点,头结点的下一个结点2.转变指针的方向,即将P2指向P1这样我们就可以将左边的看作一个新的链表,头结点为1,指向NULL3.这时候我们移动P1,使P1=P2,将P1作为头结点,方便下一次的P2转向4.挪动...原创 2019-03-23 19:33:49 · 2112 阅读 · 2 评论 -
数据结构基础-链表基本操作
链表和顺序表不同,它的存储是随机的,它的每个结点之间用指针链接,每个节点都存着下一个结点的地址,因此插入删除也比较简单,只需要修改指针就可以完成。这里我们比较一下顺序表和链表顺序表:1.插入删除比较麻烦(除了尾插和尾删) 2.可以根据下标来随便访问内容链表: 1.元素的增删复杂度都是O(1)(双向的情况) ...原创 2019-03-23 18:23:48 · 213 阅读 · 0 评论 -
leetcode-最小栈
题目链接:https://leetcode-cn.com/explore/interview/card/top-interview-quesitons-in-2018/266/heap-stack-queue/1153/因为栈的先进后出特性,所以我们需要一直将最小值放在栈顶,然而还要维持正常的出进栈,用一个栈完成这样的操作复杂度会在O(n)以上,所以我的思路是用两个栈来实现,一个用来保存正常...原创 2019-07-26 14:33:24 · 143 阅读 · 0 评论