数据结构与算法(C语言)
文章平均质量分 87
数据结构初阶,C语言实现
风继续吹TT
这个作者很懒,什么都没留下…
展开
-
【数据结构】八大排序(超详解+附动图+源码)
前言所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。生活中各种地方都需要用到排序,所以学好排序算法是非常重要的。排序分为 内部排序 和 外部排序。内部排序:数据元素全部放在内存中的排序。外部排序:数据元素太多不能同时放在内存中,根据排序过程的要求不能在内外存之间移动数据的排序。这部分主要是内部排序。排序讲解都以升序为例。常见的排序算法:// 排序实现的接口// 插入排序void InsertSort(int* arr..原创 2021-11-21 20:07:05 · 91521 阅读 · 154 评论 -
【数据结构】二叉树经典OJ练习
前言本章只是二叉树的部分简单练习,对于这部分题目大多比较简单,但重要的不是能过OJ,而是深入理解每一道题的解题原理。多思考,勤动手,才是正解。对于编程,我们要做到画图半小时,写代码五分钟;而不是写代码五分钟,调试三十分钟。理解递归思想,分治思想,温故而知新~1.单值二叉树单值二叉树根据题目描述,判断二叉树的每个节点的值是否相同。方法:先判断根节点与左右子节点的值是否相等。 进而递归判断左右子树的根节点与左右子节点的值是否相等。代码如下:bool isU.原创 2021-11-15 19:42:07 · 2951 阅读 · 26 评论 -
【数据结构】二叉树(顺序结构+链式结构+堆排序+Topk问题)
树概念及结构树的概念树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。有一个特殊的结点,称为根结点,根节点没有前驱结点。 除根节点外,其余结点被分成M(M>0)个互不相交的集合T1、T2、……、Tm,其中每一个集Ti(1<= i<= m)又是一棵结构与树类似的子树。每棵子树的根结点有且只有一个前驱,可以有0个或多个后继。 因此,树是递归定义的。 注..原创 2021-11-13 14:19:58 · 3732 阅读 · 68 评论 -
【数据结构】栈和队列OJ练习(栈和队列相互实现+循环队列实现)
前言前面在学习了栈和队列的实现之后,相信大家对栈和队列的结构和使用方式都有了一些理解。下面我们就来进行一些练习,这这章的练习相对于原来在难度上有了一些提升。原来的题只需要实现一个接口,而今天的练习题需要实现多个接口。1.用队列实现栈225. 用队列实现栈 - 力扣(LeetCode) (leetcode-cn.com)栈:后进先出;队列:先进先出方法:创建两个队列,用来来回导数据。入栈:将数据放入不为空的队列。出栈:将不为空的队列中的数据以出队入栈的方式.原创 2021-11-03 21:21:03 · 2759 阅读 · 60 评论 -
【数据结构】队列(实现+原码)
目录队列的概念及结构队列的实现初始化队列销毁队列队尾入队队头出队获取队列头部元素获取队列尾部元素检测队列是否为空获取队列中有效元素个数测试队列的概念及结构队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出FIFO(First In First Out)。入队列:进行插入操作的一端称为队尾。出队列:进行删除操作的一端称为队头。队列的实现队列也可以数组和链表的结构实现,使用链表的结构实现更优..原创 2021-11-01 21:18:31 · 554 阅读 · 13 评论 -
【数据结构】栈(实现+原码)
栈的概念及结构栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)原则。压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。出栈:栈的删除操作叫做出栈。出数据也在栈顶。栈的实现栈的实现一般可以使用数组或者链表实现,相对而言数组的结构实现更优一些。因为数组在尾上插入数据的代价比较小。#pragma once#include<s.原创 2021-10-31 10:49:57 · 1467 阅读 · 9 评论 -
【数据结构】必会的两种链表结构之---双向带头循环链表(附源码)
目录前言双向带头循环链表结构实现函数声明打印链表初始化链表销毁链表申请结点尾插头插尾删头删查找在pos位置前面插入删除pos位置的结点前言前面我们讲过,链表分为带头和不带头,双向和单向,循环和非循环链表。那么经过排列组合之后,就会有8中链表结构。其中最常用的是单向不带头非循环链表和双向带头循环链表。前者在之前已经实现过了,今天的内容主要是双向带头循环链表的实现。双向带头循环链表结构1. 无头单向非循环链表:结原创 2021-10-29 13:39:49 · 820 阅读 · 27 评论 -
【数据结构】链表OJ练习---这些必考题你真的会了吗?(详解+代码)
1.原创 2021-10-28 11:49:51 · 3933 阅读 · 28 评论 -
【数据结构】链表(单链表实现+详解+原码)
前言上一章我们学到了顺序表,实现了顺序表的增删查改。当然也发现了顺序表存在的一些优点与缺陷,我们再来回顾一下:优点:支持随机访问,可以通过下标来直接访问。 可以排序。缺点:中间/头部的插入删除,时间复杂度为O(N) 增容需要申请新空间,拷贝数据,释放旧空间。会有不小的消耗。 增容一般是呈2倍的增长,势必会有一定的空间浪费。所以为了弥补这些缺点就有了链表,那么什么是链表呢?链表链表的概念及结构概念:链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是原创 2021-10-21 22:48:36 · 54294 阅读 · 17 评论 -
【数据结构】顺序表(实现+详解+源码+通讯录项目(静态+动态+文件保存))
概念及结构顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数据的增删查改。顺序表一般可以分为:静态顺序表:使用定长数组储存元素。 动态顺序表:使用动态开辟的数组储存。...原创 2021-10-18 17:11:53 · 19861 阅读 · 21 评论