
数据结构
会做饭的网络工程师
这个作者很懒,什么都没留下…
展开
-
红黑树定义及其代码实现
红黑树是一种自平衡二叉查找树,它在每个节点上增加了一个存储位来表示节点的颜色,可以是红色或黑色。通过对任何一条从根到叶子节点的路径上各个节点的颜色进行约束,红黑树确保没有一条路径会比其他路径长出两倍,因此,红黑树是近似平衡的。5. 对于每个节点,从该节点到其所有后代叶子节点的简单路径上,均包含相同数目的黑色节点。4. 如果一个节点是红色的,则它的两个子节点都是黑色的。3. 每个叶子节点(NIL节点,空节点)是黑色的。1. 每个节点要么是红色,要么是黑色。2. 根节点是黑色的。原创 2023-06-16 17:59:39 · 838 阅读 · 0 评论 -
C语言中fopen的详细用法
fopen函数的mode参数有以下几种:"r":以只读方式打开文件。文件必须存在,否则打开失败。"w":以写方式打开文件。如果文件不存在,则创建文件;如果文件已存在,则清空文件内容。"a":以追加方式打开文件。如果文件不存在,则创建文件;如果文件已存在,则在文件末尾追加内容。"r+":以读写方式打开文件。文件必须存在,否则打开失败。"w+":以读写方式打开文件。如果文件不存在,则创建文件;如果文件已存在,则清空文件内容。"a+":以读写方式打开文件。如果文件不存在,则创建文件;如果文原创 2023-04-15 16:15:56 · 11871 阅读 · 0 评论 -
C语言字符常量和字符串常量的区别
字符常量只能包含一个字符,即用单引号括起来的一个字符,例如'a'、'b'、'c'等。需要注意的是,字符数组的长度必须大于等于字符串常量的长度,因为字符串常量以空字符'\0'结尾,所以字符数组的长度应该比字符串常量的长度多1。C语言字符常量是指由单引号括起来的一个字符,例如'a'、'b'、'c'等。在C语言中,还可以使用转义字符来表示一些特殊的字符,例如'\n'表示换行符,'\t'表示制表符等。例如,字符常量'a'的ASCII码值为97,字符常量'A'的ASCII码值为65。原创 2023-04-15 09:23:51 · 582 阅读 · 0 评论 -
C语言考试必考关键字
C语言的关键字共有32个,根据关键字的作用,可分其为数据类型关键字、控制语句关键字、存储类型关键字和其它关键字四类。原创 2023-04-15 09:04:03 · 355 阅读 · 0 评论 -
【创作赢红包】C语言统计txt文件中单词的个数
strtok()`函数的第一个参数为要分割的字符串,第二个参数为分割字符集合,即将要被分割的字符。在处理每个单词时,使用`strncpy()`函数将单词复制到`word`数组中,并在单词的末尾添加`\0`,使其成为一个C字符串。此外,该程序中忽略了单词之间的标点符号和空格,这意味着程序会把`"hello,"`和`"hello"`视为不同的单词。该程序首先打开一个名为`test.txt`的文件,然后读取文件中的每个单词,并将单词中的大写字母转换为小写字母。最后统计单词的数量并输出。原创 2023-04-02 11:36:13 · 614 阅读 · 5 评论 -
栈
通过上述代码,我们可以看到栈的基本操作流程。栈的应用非常广泛,例如在表达式求值中,我们可以使用栈来存储操作符和操作数,实现表达式求值的过程。在函数调用中,我们可以使用栈来存储函数的参数和返回值,实现函数调用的过程。因此,对于程序员来说,理解栈的概念和操作非常重要,这有助于我们更好地理解程序的执行过程,提高代码的编写和调试能力。用于返回栈顶元素的值,但不弹出该元素,如果栈为空,则输出“Stack is empty”。在上面的代码中,我们定义了一个数组stack和一个变量top,用于记录栈顶元素的下标。原创 2023-03-30 13:36:02 · 63 阅读 · 0 评论 -
数据结构之栈的使用
栈的特点是后进先出,即最后进入栈的元素会先被弹出栈。同时,栈的实现也是许多其他数据结构和算法的基础,例如队列、图的深度优先搜索等,因此深入了解栈的原理和实现对于进一步学习计算机科学非常有帮助。栈的溢出指在入栈操作时,栈已经满了,无法再继续入栈,这时应该进行相应的处理,例如扩容操作;栈的下溢指在出栈操作时,栈已经为空,无法继续出栈,这时也需要进行相应的处理,例如抛出异常或者返回默认值。总的来说,栈可用于许多场景,如括号匹配、计算表达式等,这些应用需要对栈的性质有深入理解,并熟练掌握栈相关的算法和操作。原创 2023-03-24 13:30:47 · 1168 阅读 · 1 评论 -
C语言存在重复元素
如果数组中每个元素互不相同,返回。如果任一值在数组中出现。原创 2022-09-24 15:49:24 · 816 阅读 · 0 评论 -
C语言旋转数组
输入: nums = [1,2,3,4,5,6,7], k = 3。输入:nums = [-1,-100,3,99], k = 2。向右轮转 1 步: [7,1,2,3,4,5,6]向右轮转 2 步: [6,7,1,2,3,4,5]向右轮转 3 步: [5,6,7,1,2,3,4]向右轮转 1 步: [99,-1,-100,3]向右轮转 2 步: [3,99,-1,-100]给你一个数组,将数组中的元素向右轮转。输出: [5,6,7,1,2,3,4]输出:[3,99,-1,-100]原创 2022-09-23 21:05:37 · 373 阅读 · 3 评论 -
堆排序代码详解
• 堆是一个完全二叉树;• 堆中每一个节点的值都必须大于等于(或小于等于)其子树中每个节点的 值。 左侧为大顶堆 右侧为小顶堆原创 2022-07-03 20:27:36 · 1095 阅读 · 3 评论 -
直接插入排序
直接插入排序原创 2022-06-22 17:30:32 · 240 阅读 · 0 评论 -
选择排序法
选择排序序程序每次找一个最小的数出来原创 2022-06-22 17:20:57 · 180 阅读 · 0 评论 -
冒泡排序法
冒泡排序初级版本冒泡排序经典版本——两两相比 冒泡排序升级版本如果嵌入的内部循环不需要交换,那么说明后面这段序列初始值就是排好的原创 2022-06-22 17:21:21 · 357 阅读 · 0 评论 -
哈希表及完整注释
哈希表(Hash table,也叫散列表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。...原创 2022-07-05 20:01:41 · 179 阅读 · 4 评论 -
折半查找法
折半查找依赖的是顺序表结构,简单点说就是数组。• 二分查找针对的是有序数据。• 数据量太小不适合二分查找。• 数据量太大也不适合二分查找。原创 2022-06-22 16:00:32 · 130 阅读 · 0 评论 -
顺序表查找
顺序表查找原创 2022-06-22 15:56:24 · 93 阅读 · 0 评论 -
静态查找表和静态查找表
静态查找表(Static Search Table):只作查找操作的查找表。它的主要操 作有:(1)查询某个“特定的”数据元素是否在查找表中。(2)检索某个 “特定的”数据元素和各种属性。动态查找表(Dynamic Search Table):在查找过程中同时插入查找表中不 存在的数据元素,或者从查找表中删除已经存在的某个数据元素。显然动 态查找表的操作就是两个:(1)查找时插入数据元素。(2)查找时删除数 据元素。...原创 2022-06-22 15:51:19 · 401 阅读 · 0 评论 -
图的基本术语,邻接矩阵、邻接表表示方法
图是一种与线性表和树相比更复杂的数据结构,在图形结构中,结构之间的关系可以是任意的,图中任意两个元素之间都可能相关图(Graph)是由顶点的有穷非空集合和顶点之间边的集合组成,通常表示为:G(V,E),其中G表示一个图,V是图G中顶点的集合,E是图中边的集合,顶点也就是树中的结点。无向边:若顶点vi到vj之间的边没有方向,则称这条边为无向边,用(vi,vj)表示。最多为n(n-1)/2条边。有向边:若vi到vj之间有方向,称为有向边,则用表示,最多有n(n-1)条有些图或弧具有与它相关的数字,...原创 2022-06-18 21:50:32 · 1155 阅读 · 0 评论 -
学生管理系统实训
#include#include#include#define StudentNumber 30 //Maximum number of students#define SubjectNumber 6 //Maximum number of subjects#define NameLength 20 //Maximum number of name_length原创 2022-06-18 13:54:36 · 246 阅读 · 0 评论 -
二叉树的存储实现与遍历和左右旋转
AVL树结点的定义,产生一个结点,实现前序遍历,二叉树右旋的实现,左旋的实现产生一个结点 实现前序遍历二叉树右旋的实现 左旋的实现原创 2022-06-18 13:38:46 · 309 阅读 · 0 评论 -
Python机器学习期末总复习
人工智能基本概念,KNN分类算法,K-NN源代码,K-means分类算法,K-means源代码推荐算法概述,回归分析,神经网络基础模型BP神经网络(Back Propagatioon)原创 2022-06-17 22:22:30 · 1850 阅读 · 0 评论 -
KNN算法数字识别完整代码——打开就可以跑
目录1、原理2、数据集3、代码以及注释1. 数据准备:2. 构建训练数据集:3. 测试集数据测试:4、运行结果5、总结6、致谢1、原理邻近算法,或者说K最近邻(KNN,k-NearestNeighbor)分类算法是数据挖掘分类技术中最简单的方法之一。所谓K最近邻,就是K个最近的邻居的意思,说的是每个样本都可以用它最接近的k个邻居来代表。接下来对KNN算法的思想:就是在训练集中数据和标签已知的情况下,输入测试数据,将测试数据的特征与训练集中对应的特征进.原创 2022-05-18 21:25:33 · 4168 阅读 · 4 评论 -
如何在链表头部删除元素
Status list_pop_front(LinkedList head, ElmType* data){ if(head==NULL) return ERROR; LinkedList p; p=head->next; head->next=p->next; *data=p->data; free(p); return OK; }...原创 2021-12-23 20:37:52 · 281 阅读 · 0 评论 -
使用链表反向打印数据
#include <stdio.h>#include <stdlib.h>#include<malloc.h>#define MAX 100/* run this program using the console pauser or add your own getch, system("pause") or input loop */typedef int ElmType;typedef struct node{...原创 2021-12-23 20:42:20 · 283 阅读 · 0 评论 -
设计程序计算的后缀表达式
#include <stdio.h>#include <stdlib.h>#define MAXSIZE 25 typedef enum{OK=1,ERROR=0}Status; typedef double ElmType; typedef struct{ ElmType data[MAXSIZE]; int top; }SqStack; Status Push(SqStack* s, ElmType e) { if .原创 2021-12-28 16:15:46 · 419 阅读 · 0 评论 -
C语言栈的顺序存储结构——出栈
Status Pop(SqStack* S,SElemType* e) { if(S->top==-1) return ERROR; *e=S->data[S->top]; S->top--; return OK; } 关注公众号:你不知道的东东 楼主帮忙写作业原创 2021-12-28 16:09:25 · 159 阅读 · 0 评论 -
链表的操作
#include<stdio.h>#include <stdlib.h>#include<malloc.h>/* run this program using the console pauser or add your own getch, system("pause") or input loop */typedef int ElmType;typedef struct node{ ElmType data; struct node* .原创 2021-12-23 20:40:53 · 130 阅读 · 0 评论 -
C语言栈的顺序存储结构——进栈操作
Status Push(SqStack *S, SElemType e){ if(S->top== MAXSIZE-1){ return ERROR; } S->top++; S->data[S->top]=e; return OK; }关注公众号:你不知道的东东 楼主帮忙写作业原创 2021-12-28 16:05:13 · 190 阅读 · 0 评论 -
C语言栈顺序存储的数据结构
typedef int SElemType ;typedef struct{ SElemType data [ MAXSIZE ]; int top ;} SqStack , * SqtackPtr ;关注公众号:你不知道的东东 楼主帮忙写作业C语言栈顺序存储的数据结构原创 2021-12-28 16:00:06 · 414 阅读 · 0 评论 -
C语言设计堆栈测试用例
#include <stdio.h>#include <stdlib.h>#define MAXSIZE 30typedef int SElemType;typedef struct{ SElemType data[MAXSIZE]; SElemType top;}SqStack,*SqtackPtr;typedef enum{OK=1,ERROR=0}Status; Status GetTop(SqStack* S, int* e){ .原创 2021-12-28 16:12:42 · 608 阅读 · 0 评论 -
如何构建一棵二叉平衡AVL树
第一步:写一个main文件,把主要的函数调用写在里面#include <stdio.h>#include "avl.h"/**a) Left Left Case关注公众号:你不知道的东东与博主联系T1, T2, T3 and T4 are subtrees. z y / \ / \ y原创 2022-03-19 13:58:47 · 196 阅读 · 0 评论 -
如何打印链表
Status list_print(LinkedList head){ if(head==NULL){ return ERROR; } LinkedList p=head->next; while(p!=NULL){ printf("%d",p->data); p=p->next; }}...原创 2021-12-23 20:35:06 · 1948 阅读 · 0 评论 -
结点的定义
typedef int ElmType;typedef struct node{ ElmType data; struct node* next;}Node;typedef enum ret_type {ERROR=-1,OK = 0} Status;typedef Node* LinkedList;关注公众号:你不知道的东东原创 2021-12-23 20:26:21 · 785 阅读 · 0 评论 -
如何在链表头部插入新的元素
Status list_push_front(LinkedList head, ElmType data){ if(head==NULL){ return ERROR; } LinkedList p; p->data=data; p->next=head->next; head->next=p; return OK; }...原创 2021-12-23 20:36:48 · 762 阅读 · 0 评论 -
如何产生一个节点
LinkedList node_create(ElmType data){ LinkedList p=(LinkedList)malloc(sizeof(Node)); p->data=data; p->next=NULL; return p; } 关注公众号:你不知道的东东原创 2021-12-23 20:34:07 · 318 阅读 · 0 评论 -
如何二叉树里面查找一个数
一、在二叉树里面查找一个数主要是用到的是递归的思想,或者结构题指针思想具体思路结合代码理解二、代码如下示例一:int avl_search(AVLTree root, int value){ if(root==NULL){ printf("\nNO find the element\n") } else if(root->data==value) printf("%d",root->data); //打印找到的数原创 2022-03-29 15:33:10 · 2265 阅读 · 1 评论