- 博客(12)
- 收藏
- 关注
原创 【学习笔记】二叉树(c语言)
1.树1.1树的性质树是一种非线性的数据结构,他是由n(n >= 0)个有限结点组成一个具有层次关系的集合。把他叫做树是因为他看起来向一颗倒挂的树,也就是说他是根在上,叶在下的。1.2树的相关概念节点的度:一个节点含有的子树的个数称为该节点的度; 如上图:A的为6叶节点或终端节点:度为0的节点称为叶节点; 如上图:B、C、H、I...等节点为叶节点非终端节点或分支节点:度不为0的节点; 如上图:D、E、F、G...等节点为分支节点双亲节点或父节点:若一个节点含有子节点,则这
2022-01-11 15:18:56
772
9
原创 【学习笔记】堆(c语言)
1.堆的概念堆(heap)是计算机科学中一类特殊的数据结构的统称。堆通常是一个可以被看做一棵树的数组对象。我们抛去表面看本质:堆就是一种特殊的数组,但在想象中是二叉树的结构,且该二叉树的mei。2.堆的分类2.1大根堆堆中某个结点的值总是不大于其父结点的值图:2.2小根堆堆中某个结点的值总是不小于其父结点的值图:3.堆的性质 堆中某个结点的值总是不大于或不小于其父结点的值; 堆总是一棵完全二叉树。 4.将数组建成堆前面说过堆就是一种特
2022-01-10 17:35:25
2576
原创 【学习笔记】双向带头循环链表(c语言)
1.链表分类链表的结构多种多样有三个大分类:1.单向、双向2.带头、不带头3.循环、不循环而三组之间又可以互相组合,使得链表的结构多达8种,本篇的单链表主要是指单向不带头不循环链表,这也是本篇的重点。1.1单向链表单向链表:指链表的链接方向是单向的,对链表的访问要通过顺序读取从头部开始,只能通过前一个结点找到后一结点,而不能从后一结点找到前一结点。1.2双向链表双向链表:指链表的每个数据中结点都有两个指针,分别指向直接后继和直接前驱,它能从双向链表中的任意一个结点开始,并
2021-10-29 19:46:32
801
10
原创 【详解】指针与函数传参——多图、多例子(c语言)
前言在用c语言实现链表时,会有很多朋友无法理解明明传了指针到函数中,函数中对指针改变却无法影响原函数中指针的位置,事实上,这是因为你对形参和实参的关系理解还不够透彻。通过这篇文章,我将告诉你指针传参时,函数的形参到底该选择怎样的类型接收。1.函数的实参与形参实际参数(实参)真实传给函数的参数叫实参。实参可以是常量、变量、指针甚至函数等。无论实参是何种类型的量,在进行函数调用时,他们都必须有确定的值,一边把这些值传给形参。形式参数(形参)形式参数时至函数名后括号中的变量,
2021-10-28 12:15:16
5268
13
原创 【学习笔记】栈(c语言)
1.栈的概念栈:一种特殊的线性表,其只允许再固定的一段进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端成为栈底。栈中的数据元素遵循后进先出LIFO(Last In First Out)的原则。压栈(push):栈的插入操作叫做进栈/压栈/入栈,入栈数据在栈顶。出栈(pop):栈的删除操作叫做出栈。出数据也在栈顶。2.栈实现2.1栈结构typedef int StackDataType;typedef struct Stack{ StackDataTy.
2021-10-23 16:10:36
1148
13
原创 【详解】函数栈帧——多图(c语言)
前言在c语言中我们会将一些功能单独写成一个函数,以供主函数调用,在表面来看调用的过程就是写出一个函数后,只需要在调用时中通过函数名将实参传给形参就实现了整个过程,但实际上调用的过程远比你想的复杂,这其中函数栈帧起着关键作用。通过本篇文章,我将告诉你函数在调用时计算机内究竟发生了什么?一.函数栈帧是什么?C语言中,每个栈帧对应着一个未运行完的函数。栈帧中保存了该函数的返回地址和局部变量。(来自百度百科)。通过这句话我们可以提炼出两个关键信息:1.每个未运行完的函数都有一个对应的栈帧2
2021-10-15 21:58:38
6539
42
原创 【咬文嚼字】C语言中你可能不知道的小知识(3)
前言c语言萌新在学习完一些基本语句后,就能写出一些小的c语言程序了,但在写的过程中可能总是会碰到一些小地方困扰着你,因此我决定将我切身犯过的每一个问题和遇到的困惑归纳,并用文章的形式记录分享,希望看到此文的你能从中有所收获。注:代码运行环境为(VS),不同运行环境结果可能有所不同。一、容易忽略的运算符优先问题请问以下代码在屏幕上输出什么?int main(){ int c; while (c = getchar() != EOF) putchar(c); return 0;
2021-10-06 19:39:49
565
15
原创 【学习笔记】单链表(c语言)
1.单链表概念单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素。链表中的数据是以结点来表示的,每个结点的构成:元素(s数据元素的映象) +指针(指示后继元素存储位置),元素就是存储数据的存储单元,指针就是连接每个结点的地址数据。2.链表分类链表的结构多种多样有三个大分类:1.单向、双向2.带头、不带头3.循环、不循环而三组之间又可以互相组合,使得链表的结构多达8种,本篇的单链表主要是指单向不带头不循环链表,这也是本篇的重点。2.1单向链表单向
2021-10-03 21:24:32
607
13
原创 【学习笔记】顺序表(c语言)
顺序表概念顺序表是用以一段物理地址连续的存储单眼依次存储数据元素的线性结构,一般情况采用数组存储。在数组上完成数据的增删查改。顺序表一般分为静态顺序表和动态顺序表,这里主要讲如何实现动态顺序表。顺序表分类静态顺序表动态顺序表...
2021-09-25 18:52:46
718
12
原创 【咬文嚼字】c语言中你可能不知道的小知识(2)
前言作为一名c语言萌新,在学习完c中的基本语句后,就能写出一些小的c语言程序了,但在写的过程中可能总是会碰到一些小地方困扰着你,因此我决定写下这篇文章记录下我遇到的一些小问题帮助你查漏补缺,并扫清那些你记忆中模棱两可的地方。一、printf请问一下代码在屏幕上输出什么#include<stdio.h>int main(){ int a = 12; printf("*%d*\n", a); //用两个'*'知识为了方便给
2021-09-23 22:56:33
318
15
原创 【详解】KMP算法——多图,多例子(c语言)
前言KMP算法作为程序员的必修课之一,其抽象的过程让初学者叫苦不迭,但是当你完全理解过后会发现其中蕴含着创造者的无穷智慧。本篇文章我将以大量的例子与图片,为你讲解这个奇妙的算法。KMP算法是什么?KMP算法是一种改进的字符串匹配算法,由D.E.Knuth,J.H.Morris和V.R.Pratt提出的,因此人们称它为克努特—莫里斯—普拉特操作(简称KMP算法)。KMP算法的核心是利用匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速匹配的目的。具体实现就是通过一个next()函数实现,函
2021-09-19 15:25:44
16709
48
原创 【咬文嚼字】c语言中你可能不知道的小知识
前言作为一名c语言萌新,在学习完c中的基本语句后,就能写出一些小的c语言程序了,但在写的过程中可能总是会碰到一些小地方困扰着你,因此我决定写下这篇文章记录下我遇到的一些小问题帮助你查漏补缺,并扫清那些你记忆中模棱两可的地方。一.Switch与case请问以下代码在屏幕上输出什么?#include<stdio.h>int main(){ int n = 1; switch (n) { case 1: printf("%d ", 1); case 2:
2021-09-14 16:35:15
500
13
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人