数据结构
Z_JUAN1
这个作者很懒,什么都没留下…
展开
-
数据结构----关于栈与队列(用顺序表实现栈,用链表实现队列)
一、栈栈:只允许在固定的一端进行插入和删除元素操作。进入和删除操作的一端称为栈顶,另一端为栈底。栈特性:后进先出栈功能:将数据从一个序列改变到另一种序列我们用顺序表来实现一个栈~#pragma once#include<stdio.h>#include<stdlib.h>#include<assert.h>typedef int Datatype;...原创 2018-07-01 12:02:05 · 462 阅读 · 0 评论 -
7种常见排序(冒泡、选择、插入、堆、希尔、归并、快排)
一、冒泡排序 时间复杂度:o(n^2) 空间复杂度:o(1) 稳定排序算法:(从前往后) 1. 比较相邻的两个元素,若第一个比第二个大就交换他们 2. 从第一对比较到最后一对,最后会产生一个最大值 3. 针对除了最后一个元素在进行相同的操作 4. 持续上面的步骤,比较次数会越来越少,直到没有数据需要比较 ...原创 2018-07-27 18:59:10 · 1194 阅读 · 0 评论 -
树的非递归前中后序 ~
由于递归容易导致栈溢出,所以我们采用非递归进行处理非递归采用 循环和栈 的方式进行处理一、前序//前序void PreOrderLoop(TreeNode *pRoot){ TreeNode *pCur = pRoot; Stack stack; //定义一个栈 TreeNode *pTop; //栈顶元素 stackInit(&stack); while...原创 2018-07-07 20:20:38 · 241 阅读 · 0 评论 -
堆的应用
关于堆的概念以及堆的创建、删除、插入可以戳这里~ https://blog.csdn.net/Z_JUAN1/article/details/80954426 一、100亿个数中找出最大的前k个数(海量top k 的问题) 分析: 1.首先我们需要建堆,那么是大堆还是小堆?由于要找...原创 2018-07-11 16:38:51 · 192 阅读 · 0 评论 -
链表的排序(冒泡、快排)
1.冒泡排序 思想: 我们设置两个变量cur、teil来控制循环次数,第一次我们遍历整个链表,会找到最大的一个,但是这个不能删除,只是在第二次整体遍历时不去遍历它,那么我们就用teil指针=cur指针,在第一次遍历整个链表时,cur指向了最后一个节点,此时让teil=cur,下次遍历时,cur->next!=teil,依次类推,我们就可以实现冒泡排序链表typede...原创 2018-07-17 19:17:03 · 785 阅读 · 0 评论 -
树的介绍 and 递归处理一些习题~
树· 有一个特殊的结点,称为根节点,根节点没有前区关系· 除了根节点外,其余结点被分为M(M>0)个互不相交的集合T1、T2....Tm,其中每一个集合Ti(1<= i <m)又是一颗结构与树类似的子树,每颗子树的根节点有且只有一个前驱,可以是0个或多个后继so~树是递归定义的结点: 12个节点结点的度:结点A的度为3,结点B的度为2,结点J的度为0叶节点:J F K...原创 2018-07-07 16:02:18 · 609 阅读 · 0 评论 -
数据结构---关于顺序表、链表的一些事
一、顺序表1.顺序表:用一段地址连续的存储单元依次存储数据元素的线性结构。2.地址连续的空间,一般情况下采用数组,数组有静态数组和动态数组 因此,顺序表分为静态顺序表、动态顺序表静态顺序表:结构体变量分别为:一个数组、有效元素的个数DataType array[MAX_SIZE]; //存储数据的空间// int size; //1.有效数据 2.可通过下标方式进行访问动态顺序表...原创 2018-07-04 21:48:24 · 222 阅读 · 0 评论 -
数据结构-----栈和队列的一些面试题
一、实现一个栈,要求实现push、pop、min的时间复杂度为o(1)1.我们用一个栈实现,偶数下标放的是普通的数据,奇数下标放的是最小数据push:普通(偶数下标)的数据就正常放,奇数下标:当我们要放的数据大于最小值,那么我们就要更新我们的最小值,在放进去。2.我们用两个栈实现,一个栈里面放正常数据,另一个放最小数据push:正常栈就是就正常放,当最小栈为空的时候,就直接放,不为空的时候就要进行...原创 2018-07-04 21:37:45 · 381 阅读 · 0 评论 -
堆的创建、删除、插入
我们知道在C语言中也有一个名字叫做堆,那么在数据结构中的堆和c语言中的堆一样吗?答案是:noc语言中的堆:其实是因为有一堆东西在此放着,所以起名为堆数据结构的堆:如果有一个关键码的集合k={k0,k1,k2,...kn-1},把它的所有元素按完全二叉树的顺序存储方式存储在一个一维数组中,并满足:ki<=k2*i+1 且 ki<=k2*i+2 (ki>=k2*i+1 且...原创 2018-07-11 11:30:04 · 650 阅读 · 0 评论 -
数据结构--链表的增删改查
#pragma once#include<stdio.h>#include<assert.h>#include<stdlib.h>typedef int DataType;typedef struct SListNode{ DataType data; struct SListNode *pNext;} SListNode;//初始...原创 2018-06-20 16:14:53 · 486 阅读 · 0 评论 -
数据结构----增删改查(静态顺序表、动态顺序表)
静态顺序表的所有代码~#pragma once#include <stdlib.h>#include <assert.h>#include <string.h>#include <stdio.h>typedef int DataType;#define MAX_SIZE (100)typedef struct SeqList {...原创 2018-06-20 19:13:40 · 378 阅读 · 1 评论 -
关于链表的一些面试题~
一、从尾到头打印单链表//从尾到头打印void PrintR(SListNode *pFirst){ SListNode *pNode = pFirst; SListNode *pend = NULL; while (pend != pFirst){ while (pNode->pNext != pend) { pNode = pNode->pNext;...原创 2018-06-29 19:06:04 · 254 阅读 · 0 评论