自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(21)
  • 收藏
  • 关注

原创 数据结构-堆的实现(详细图解+解说)

本文详细介绍了数据结构-堆的实现

2022-04-16 18:09:23 2641 3

原创 树和二叉树的基本概念及性质

树的基本概念及性质

2022-04-16 15:19:01 1024

原创 数据结构-队列及其链表方式实现

目录1.队列的概念二.队列的实现1.基本结构2.常见接口1.QueueInit函数-对队列结构进行初始化2.QueuePush函数-队尾入队列3.QueuePop函数-队头出数据4.QueueBack函数-获取队尾元素5.QueueSize函数-获取队列有效元素个数6.QueueEmpty函数-判断队列是否为空7.QueueDestroy函数-队列的销毁1.队列的概念队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队

2022-04-05 21:08:42 2753 2

原创 数据结构-栈及其实现

一.栈的概念栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端 称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。其中有以下概念:栈顶(Top):线性表允许进行插入和删除的一端。栈底(Bottom):固定的,不允许进行插入和删除的另一端。空栈:不含任何元素。二.栈的实现我们之前学习过两种常用线性表,即顺序表和链表。这两种数据结构都能被我们用于实现栈。由于栈只..

2022-04-05 19:59:59 974

原创 双向带头循环链表-实现思路+图解

目录一.何为双向循环链表?1.何为'双向'?2.何为'带头'?3.何为'循环'?二.如何实现双向带头循环链表?1.基本结构-结点的创建2.创建哨兵位结点3.链表的增删查改一.何为双向循环链表?在学习双向带头循环链表之前,我们一定都学习过最基础的单链表。单链表是一种线性的数据结构,由若干个动态内存分配的结点相互链接而形成,其中每一个结点拥有一个指向下一个结点的指针。因此,通过头节点进行顺序访问,我们可以遍历这个单链表获取数据。单链表图示如下:然而,由于.

2022-04-02 11:51:24 1988 1

原创 单链表的基本实现(详细图解+解说)

目录一.前言:二.链表的结构实现:三.单链表的功能实现-增删查.....1.结点的申请2.数据的头插3.数据的打印4.数据的尾插5.数据的头删6.数据的尾删7.数据的查找8.数据的指定插入和指定删除9.链表的销毁四.后言一.前言:我们都知道,顺序表是一块连续的可以存放数据的存储空间,其可以通过下标或指针解引用的方式快速访问某个位置的数据,但是由于空间的连续性,想要灵活的插入和删除数据便较为困难。区别于顺序表,链表由一个个独立的可以存放数..

2022-03-16 18:35:26 4988 2

原创 顺序表及常见接口实现

顺序表 概念及结构:顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数据的增删查改。顺序表一般可以分为: 1. 静态顺序表:使用定长数组存储元素2. 动态顺序表:使用动态开辟的数组存储。静态顺序表依赖于C语言内置的数组类型,此处不做过多介绍。下面主要介绍动态顺序表的实现。动态顺序表能够通过动态内存分配自由的开辟所需的空间,因此相较而言有更大的灵活性。一.顺序表的实现typedef int SLDateT

2022-03-10 20:42:12 284

原创 算法时间复杂度的介绍

一.引言正所谓"条条大路通罗马",要通过编写程序来实现某种目的,毫无疑问有着各种各样的方法,算法(Algorithm)便是描述解题所采用的方法。但是,在我们运行程序的时候,不同的算法的效率一般有优劣之分。那么如何衡量程序实现的效率呢?这里我们引入复杂度的概念。二.算法复杂度算法在编写成可执行程序后,运行时需要耗费时间资源和空间(内存)资源 。因此衡量一个算法的好坏,一般 是从时间和空间两个维度来衡量的,即时间复杂度和空间复杂度。 时间复杂度:主要衡量一个算法的运行快慢空间复杂度:主..

2022-03-07 16:06:55 377

原创 C语言预处理指令详解(一)

目录一.常见预处理符号二.#define 定义标识三.#define 定义宏四.#define 替换规则五.宏和函数对比六.宏用法的拓展-#和##七.命名约定一.常见预处理符号__FILE__ //进行编译的源文件__LINE__ //文件当前的行号__DATE__ //文件被编译的日期__TIME__ //文件被编译的时间__STDC__ //如果编译器遵循ANSI C,其值为1,否则未定义这些预处理符号均为C.

2022-03-03 21:40:26 653

原创 C语言之数据的存储

数据的存储和内存密切相关,想要明白数据的存储方式,就需要明白它们在内存中的存放方式。下面介绍整形数据的存储和浮点型数据的存储1.整形数据的存储首先我们需要明白哪些数据属于整形家族整形家族:char unsigned char signed charshort unsigned short [int] signed short [int]int unsigned int signed intlong unsigned long [int] signed long [int

2022-03-03 17:56:47 494

原创 常见字符串函数及其模拟实现

在程序中,我们经常需要对字符串进行相关处理,那么开门见山,我将一一介绍常见的字符串函数。1.strlen函数-size_t strlen ( const char * str )该函数用于求字符串的长度,以'\0' 作为结束标志,strlen函数返回的是在字符串中 '\0' 前面出现的字符个数,该函数较为简单,下面我们看strlen函数的模拟实现3种模拟实现://1.计数器实现unsigned int my_strlen2(const char* arr){ assert(arr);

2022-02-26 19:06:37 360

原创 C语言文件操作详解

如果你是一个C语言初学者,那么你一定发现,目前我们的C语言程序只会在执行后自动退出,而不会保存数据及运行结果,那么如何才能保存数据呢?为了保存数据,我们可以用到文件操作。

2022-02-25 10:51:38 21276 5

原创 两百行代码实现简易扫雷 (详解)

首先进行规则,三子棋的实现中已说明过的点在此处不在赘述一.菜单相关作用在实现三子棋时已进行过概述,此处直接上代码:void menu(){ printf("***************扫雷小游戏 ***************\n"); printf("*************** 1. play ***************\n"); printf("*************** 0. exit ***************\n"); printf("******

2021-11-12 20:45:27 1324 2

原创 两百行代码实现简易三子棋小游戏(详解)

自学习C语言来第一次面对"大工程",首先我们得好好的进行规划。一.菜单作为一个游戏,玩家进去后首先应该有一个简易的界面,对玩家进行选项提示,这里简单的编写一个菜单函数,代码实现如下:void menu(){ printf("************三子棋小游戏************\n"); printf("************ 1.play ************\n"); printf("************ 0.exit ************\

2021-11-12 17:28:51 2720

原创 函数基础与递归简介

下面先给出实例:int Add(int x, int y){ return 0;}返回数据类型 函数名 (参数接收){ return 返回值;}int为返回数据类型,一般可为char,int,float...常见类型。函数名可自行决定(不能为关键字),后可用于函数调用。参数接收即为形参设置,接收函数调用时传递的实参数据。return返回值,即函数调用完成后返回的值需注意,void(即为空类型)类型无返回值函数能将具有独立功能的代码封装成一个函数,假如在项目.

2021-11-08 23:17:13 164

原创 循环语句基础详解

有了分支结构,我们的代码已经可以完成许多的操作。然而试想一下,假如我们要重复的执行一个操作许多次,我们应如何实现?比如,现要求在屏幕上打印10个:“helloworld”写10个printf语句?那代码未免过于繁杂。C语言提供了循环语句,让我们能够轻松实现这一操作。常见的循环语句1.while语句,代码展示如下:while (条件表达式) { 需执行代码; }首先判断条件表达式是否成立,若不成立则直接跳过整个代码块,若成立则进入内部循环体执行代码,完成后跳转到判断部分继续循环.

2021-11-08 21:29:01 419

原创 最大公约数的几种基本求解方法

给定两个数a,b,若a>b,求解他们的最大公约数方法1.试除法:由于最大公约数r满足1<=r<=b,并且有a%r=0,b%r=0。因此只要从r=b开始试除,若满足条件,则此时r为最大公约数,否则r自减1即可。若r自减到1,则1为最大公约数。代码实现:#include <stdio.h>int is_Gcd(int a,int b,int r){ if (a % r == 0 && b % r == 0) return r; else

2021-11-03 15:34:11 2332

原创 两大分支语句 ——if&&switch

C语言三大结构之一-选择结构:最简易可由 1.判断句if或 switch2.条件表达式 3.条件成立需执行的相应代码段. 三部分组成,用于判断给定的条件,根据判断的结果判断某些条件,根据判断的结果来控制程序的流程。例:if (条件表达式){ 条件成立需执行代码;}由于在C语言中,非0为真,0为假。因此若条件表达式成立,表达式返回值1并会执行相应代码段,而若条件表达式不成立,返回值0并跳过相应代码段。下面详细介绍if和switch两大分支语句:1.if语句:...

2021-10-27 19:16:29 423

原创 作用域和生命周期

全局变量,局部变量和函数形参的作用域和生命周期:全局变量的默认作用域是整个程序,局部变量的作用域在当前代码块内部,函数形参作用域是本函数。故全局变量生命周期为整个程序,局部变量的生命周期从当前代码块开始,至当前代码块结束。函数形参的生命周期从函数执行开始,至函数结束也结束。同名全局变量和局部变量的使用:在C语言中,全局变量保存在内存的全局存储区中,占用静态的存储单元;局部变量保存在栈中,只有在所在函数被调用时才动态地为变量分配存储单元。因此当不存在局部变量时,使用此变量,将对全局变量进行操作

2021-10-18 22:38:26 297 1

原创 常量&变量

常量&变量常量变量补充常量1.一般常量,单字符,数字或字符串,如:0 ,3.14, ‘a’ , "hello world"均为一般常量2.标识符常量,用#define定义的常量,如:#define MAX 1 ,MAX即为标识符常量,其值为13.枚举常量,枚举类型是一种的值类型,它用于声明一组命名的常数。变量1.一般变量,由基础数据类型定义,如:inta = 0,floatb = 3.14,charc = ‘c’,其中a,b,c均为一般变量2.常...

2021-10-18 22:14:53 151

原创 新的起点-从零开始

我的第一篇博客前言编程目标如何学习花费时间最想进入的IT公司前言我是何时开始对计算机感兴趣的呢?第一次接触游戏,在网上搜索vbs整蛊小代码,超级骇客在网络上来去自如的形象,第一次接触helloworld......这一切的一切都使我对计算机产生了浓厚的兴趣。如今已然步入大一,我也正式开始学习编程语言,望不负大学生活。编程目标熟练掌握一门编程语言并能实际运用,能利用数据结构和算法相关知识对代码进行优化,了解操作系统,计算机组成原理,计算机网络编译原理等知识。希望能.

2021-10-16 10:40:57 1707 4

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除