![](https://img-blog.csdnimg.cn/27476f5e42184642bba532b41cd4c160.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
#数据结构专栏
一枚大学生学习数据结构的笔记叭叭叭
表哥抱表弟
这个作者很懒,什么都没留下…
展开
-
舍友教我非比较排序(C)
目录1.排序原理2.代码实现3.排序特性1.排序原理思想:计数排序又称为鸽巢原理,是对哈希直接定址法的变形应用。 操作步骤:1. 统计相同元素出现次数2. 根据统计的结果将序列回收到原来的序列中根据我自己的理解就是数据集合在一段区间内;我们需要统计这个区间内的每个数字的个数;然后在从数据集合的开始数据往后一次还原数据集合;这样就完成了排序~~假设我们的数据为:...原创 2022-02-12 12:51:19 · 476 阅读 · 0 评论 -
舍友教我归并排序(C)
舍友教我排序~~原创 2022-02-12 12:34:48 · 711 阅读 · 0 评论 -
舍友教我快速排序(C)
舍友教我的....原创 2022-02-11 14:09:39 · 459 阅读 · 9 评论 -
舍友教我堆排序(C)
目录1.排序原理2.完整代码如下1.排序原理堆排序(Heapsort)是指利用堆积树(堆)这种数据结构所设计的一种排序算法,它是选择排序的一种。它是通过堆来进行选择数据,需要注意的是排升序要建大堆,排降序建小堆。每调整一次,二叉树的孩子节点要少一个(并不是删除而是不在排序队列里面). 1.在这里我们需要用到向下调整的方法:代码如下void HeapAdjust(int* arr,int size,int parent){//堆调整 in...原创 2022-02-09 16:08:34 · 705 阅读 · 3 评论 -
舍友教我选择排序(C)
1.选择排序原理每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完 。例如: 1.在元素集合array[i]--array[n-1]中选择关键码最大(小)的数据元素, 2.若它不是这组元素中的最后一个(第一个)元素,则将它与这组元素中的最后一个(第一个)元素交换 3.在剩余的array[i]--array[n-2](array[i+1]--array[n-1])集合中,重复上述...原创 2022-02-09 15:48:34 · 341 阅读 · 0 评论 -
舍友教我希尔排序(C)
1.排序原理希尔排序法又称缩小增量法。希尔排序法的基本思想是:先选定一个整数,把待排序文件中所有记录分成个组,所有距离为的记录分在同一组内,并对每一组内的记录进行排序。然后,取,重复上述分组和排序的工作。当到达=1时,所有记录在统一组内排好序。 总的来说希尔排序是插入排序的优化,当gap > 1时都是预排序,目的是让数组更接近于有序。当gap == 1时,数组已经接近有序的了,这样就会很快。这样整体而言,可以达到优化的效果。我们实现后可以进行性能测试的对比.希尔...原创 2022-02-08 12:53:35 · 496 阅读 · 2 评论 -
舍友教我冒泡排序(C)
1.冒泡排序原理冒泡排序很简单,我们假设数据集合为:3,2,5,8,4,7,6,9;排序规则为升序我们从3开始与2,5,8,4,7,6,9依次比较,我们比较一趟:1.3>2(交换)-->2,3,5,8,4,7,6,92.3<5(不交换)-->2,3,5,8,4,7,6,93.5<8(不交换)-->2,3,5,8,4,7,6,94.8>4(交换)-->2,3,5,4,8,7,6,95.8>7(交换)-->2,3,5,4,7原创 2022-02-08 12:40:41 · 492 阅读 · 0 评论 -
数据结构例题(链表) ---猛男专属
*链表数据结构例题1.输入两个链表,找出它们的第一个公共结点:题目:给你两个单链表的头节点headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。图示两个链表在节点 c1 开始相交:题目数据保证整个链式结构中不存在环。注意,函数返回结果后,链表必须保持其原始结构。分析:1.先判断链表是否相交: 设置两个指针遍历两个链表,如果最后的节点地址相同则相交; ...原创 2021-11-29 22:30:16 · 524 阅读 · 2 评论 -
舍友教我直接插入排序(C语言)
舍友早上起来偷偷卷,被我发现了,无奈之下教我插入排序.背着我偷偷学习,不可能!!!!首先直接插入排序,人如其名:就是排序的方法是进行插入,相对来说比较简单.简单讲一下思路:当插入第i(i>=1)个元素时,前面的array[0],array[1],…,array[i-1]已经排好序,此时用array[i]的排序码与array[i-1],array[i-2],…的排序码顺序进行比较,找到插入位置即将array[i]插入,原来位置上的元素顺序后移.代码也比...原创 2022-01-10 10:12:02 · 274 阅读 · 1 评论 -
C语言实现链表的创建,插入,删除和逆序
多的不说直接淦代码#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include <assert.h>#include <string.h>#include <stdlib.h>typedef struct linklist { int data; struct linklist* next;}node;void My_printf1(node* head) {//链表的输出 node原创 2021-11-09 22:04:34 · 996 阅读 · 2 评论 -
C语言实现单链表的基本功能
1.首先简单了解一下链表的概念:**要注意的是链表是一个结构体实现的一种线性表,它只能从前往后,不可以从后往前(因为next只保存下一个节点的地址).在实现单链表的操作时,需要用指针来操作.很简单,注释写的很详细,欢迎大家指正哈哈哈哈~之前写的太烂了重新写了一下.....2.代码展示:#include <stdio.h>#include <assert.h>#include <stdlib.h>typedef struct linklist {.原创 2021-11-22 23:51:19 · 973 阅读 · 2 评论 -
C语言实现双向循环链表贼旮旯详细
1.首先了解一下双向循环链表:1.首先需要一个头节点head,里面的data没有意义 .2.结构体含a.prev b.data c.nexta:保存前驱的地址b.数据域c.保存后继节点的地址2.头节点的前驱保存的是最后一个节点的地址,最后一个节点的后继地址保存的是头节点的地址.3.接下来进行双向循环链表的基本操作(注释很详细):#include <stdio.h>#include <assert.h>#include <mall..原创 2021-11-27 16:11:48 · 1188 阅读 · 1 评论 -
C语言用栈实现队列(数据结构)
1.首先需要两个栈来模拟队列的出队和入队2.假设入队1 2 3 4 ,如果要出队则不能直接出栈.需要进行数据的搬移:先把s1的数据全部放入s2中,然后再在s2出栈->整个队列出队:3.如果再要入队则将入队元素放入s1,若要出队则出栈s2元素,若s2为空则继续搬移s1的元素到s2即可.4.总结:入队:s1 出队:s25.代码如下:typedef int Datatype;typedef struct stack { Datatype* arr; ..原创 2021-12-01 18:05:21 · 1768 阅读 · 2 评论 -
C语言实现双向链表的创建,删除以及头插元素
老规矩直接淦代码:#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <assert.h>typedef struct dolinklist { int data; struct dolinklist* prior; struct dolinklist* next;}node;node* Creatlist() {//头节点创建 node* he原创 2021-11-10 22:32:04 · 1244 阅读 · 3 评论 -
舍友教我判断平衡二叉树
早上天还没亮,发现宿舍舍友手机发着亮光(这里是谁不说了!!),我一看手表才凌晨不到五点,好家伙!!这次被我抓住了!我偷偷下床去他床边瞅瞅(舍友带着耳机可能没听见),我发现他正在做oj题,题目是:平衡二叉树!!woc~~~我准备公布他的恶臭的行为导致我们宿舍卷的不行!!他一把捂住了我的嘴说:既然被你发现了来来来,我给你说这个咋做.以下是舍友给我教的和我没有关系啊,我也不会看不懂:首先了解一下题目: 题目:给定一个二叉树,判断它是否是高度平衡的二叉树。要求:一个...原创 2022-01-18 16:39:05 · 525 阅读 · 0 评论 -
C语言实现顺序表的基本操作(简单版)
由于很简单,所以我把注释写的很详细,欢迎大家指正错误!!#include <stdio.h>#include <malloc.h>#include <assert.h>//创建动态顺序表typedef struct node { int* arr;//指针指向头 int szie;//有效元素 int capacity;//总容量}node;//1.顺序表初始化void NodeInit(node* ps, int initcapacity);原创 2021-11-15 21:20:51 · 907 阅读 · 2 评论 -
C语言实现循环队列
循环队列五分钟教会原创 2021-12-02 23:21:47 · 1486 阅读 · 1 评论