初阶-数据结构
dpf_xa_ca
初出茅庐
展开
-
数据结构——C语言 《 堆的介绍 》和 《 堆的实现 》
一,堆的理解如果有一个关键码的集合K = {k0,k1, k2,…,kn-1},把它的所有元素按完全二叉树的顺序存储方式存储在一个一维数组中,并满足:Ki <= K2i+1 且 Ki<= K2i+2 (Ki >= K2i+1 且 Ki >= K2i+2) i = 0,1,2…,则称为小堆(或大堆)。将根节点最大的堆叫做最大堆或大根堆,根节点最小的堆叫做最小堆或小根堆。堆...原创 2019-12-26 21:08:46 · 127 阅读 · 0 评论 -
总结:《list和vector》《AVL与红黑树》《set与map》《链表与顺序表》《算法排序》
一,list和vector的区别区别:vector为存储的对象分配一块连续的地址空间,因此对vector中的元素随机访问效率很高。在vecotor中插入或者删除某个元素,需要将现有元素进行复制,移动。如果vector中存储的对象很大,或者构造函数复杂,则在对现有元素进行拷贝时开销较大,因为拷贝对象要调用拷贝构造函数。对于简单的小对象,vector的效率优于list。vector在每次扩张容量的时...原创 2019-12-11 00:54:56 · 249 阅读 · 0 评论 -
链表——双向链表 主要包括:《双向链表的完整接口实现代码及执行程序》《链表和顺序表的区别和联系》
《一》 双向链表双向链表思想 : 结构最复杂,一般用在单独储存数据,实际中使用的链表数据结构,都是带头双向链表循环链表,,虽然这个链表看起来比较复杂,但是实现代码之后,这个结构可以解决很多问题,也有很多优势,实现就反而简单了。下面我们就看一下代码的实现。首先和之前一样,我们先给出实现的接口;#define _CRT_SECURE_NO_WARNINGS 1#include<st...原创 2019-04-24 12:33:55 · 293 阅读 · 0 评论 -
链表——单向链表 主要包括:《 单链表的完整接口实现代码 和 执行结果 》
链表的概念::链表是一种物理存储结构上《 非连续、非顺序 》的存储结构,数据元素的逻辑顺序是通过链表中的《 指针 》链接次序实现的。在我们的实际链表应用中,有许多的样子的,总结一下就是8中结构:1. 单向、双向2. 带头、不带头3. 循环、非循环就是 《 二的三次方 》种...原创 2019-04-23 22:49:55 · 370 阅读 · 0 评论 -
排序——选择排序 主要包括:《直接选择排序》《堆排序》
选择排序的思想:每一次我们都选择在排序中,最大或者最小的数,放在第一的位置,直到所有的等待排序都完成。(1)直接选择排序直接选择排序的思想;(这里主要为我自己的想法)我们定义个一个min,在定义一个max,让min和max比较,且与在等待排序中的最后一个(end)和开始位置(begin),它们在等待排序中比较自己大小的位置,如果开始位置比最后一个位置的数大,《这里我们主要说的升序遍历》,那么将...原创 2019-04-18 16:57:38 · 455 阅读 · 0 评论 -
排序——插入排序 主要包括:《直接插入排序》《希尔排序》
一,插入排序首先,我们要先了解一下,插入排序的思想:原创 2019-04-18 16:57:03 · 495 阅读 · 0 评论 -
排序——归并排序 / 非归并排序——《 计数排序 》
一。归并排序归并排序的主要思想:首先将这个列数组分解成两个部分,然后在分,直到分解到个数的时候,不能再分了,然后再进行排序,组合,组合成两个组,然后再把再把两个组按照小的先入的原则,在分别在进入,组合。下面我们拿这个图片,看一下。这里我主要是,拿了一部分的例子说明一下,让我们可以看懂一下。下面我们看一下实现的代码:void _MergeSort(int* a, int begin, i...原创 2019-04-22 18:40:44 · 277 阅读 · 0 评论 -
排序——交换排序 主要包括:《冒泡排序》《快排—四种快排方法》
交换排序的思想:就是将再序列中标记的两个值,进行交换,我们将较大的值往后移动,将较小的值往前移动。(1)冒泡排序冒泡排序的思想:就是把第一个值与后面的值全部进行比较,并且交换,直到找到自己位置,然后重复这个过程。下面是我们是实现的代码;void BubbleSort(int* a, int n) //没有优化之前的{ int i = 0; int end = n ;...原创 2019-04-22 12:33:11 · 1553 阅读 · 0 评论 -
二叉树的相关接口实现以及《队列和栈的接口实现》(完整版)
我们想我们都知道在写二叉树的时候,在完成非递归的时候,就要用到栈(Stack)的代码,或者是队列(Queue)的代码。所以接下来,我们就实现以下二叉树的代码,如果用C语言写的话,需要栈和队列的代码,在我下面的链接或着是在我的数据结构里面可以看到。Tree.h#ifndef __TREE_H__#define __TREE_H__#include<stdio.h>#incl...原创 2019-03-19 09:42:42 · 180 阅读 · 0 评论 -
队列的相关接口实现 《完整版》
打开队列的同学,相信前面的栈也已经看过了,是不是觉得还可以,但是后来的二叉树可不是那么接单就能够理解的,所以,我觉得同学如果想学好一点,还是提前看一下,预习以下。点开下面的链接,或者是打开我的数据结构;Queue.c#ifndef __QUEUE_H__#define __QUEUE_H__#include<stdio.h>#include<stdlib.h...原创 2019-03-19 09:41:50 · 241 阅读 · 0 评论 -
栈的相关接口的实现 (完整版)
实现了栈,我相信刚刚学习数据结构的同学们应该是马上学习队列了,因为两者有着密切的联系。而需要写二叉树的同学也是需要栈和队列的接口实现。如果需要队列或者写二叉树的同学可以点开下面的链接,或者直接进入我的数据结构。Stack.htypedef int STDataType;typedef struct Stack{STDataType* _a;int _top; // 栈顶int _c...原创 2019-03-19 09:40:47 · 506 阅读 · 0 评论 -
线性表——顺序表 《完整顺序表的接口实现(数据结构)》
首先,先给大家一些接口,如果能力强的同学,可以自己练习一下。#ifndef __SEQLIST_H__#define __SEQLIST_H__#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<stdlib.h>#include<malloc.h>#include<...原创 2019-01-31 16:57:13 · 393 阅读 · 0 评论