2.27数据结构

1.链队

//link_que.c
#include "link_que.h"//创建链队
Q_p create_que()
{Q_p q = (Q_p)malloc(sizeof(Q));if(q==NULL){printf("空间申请失败\n");return NULL;}node_p L=(node_p)malloc(sizeof(node));if(L==NULL){printf("申请空间失败\n");return NULL;}L->next=NULL;q->front = L;q->rear = L;return q;
}
//创建结点
node_p create_node()
{node_p new=(node_p)malloc(sizeof(node));if(new==NULL){printf("申请空间失败\n");return NULL;}new->data=0;new->next=NULL;return new;
}
//判空
int empty_que(Q_p q)
{if(q==NULL){printf("入参为空\n");return -1;}return q->front==NULL?1:0;
}
//入队
void push_que(Q_p q,datatype e)
{if(q==NULL){printf("入参为空\n");return;}node_p s=create_node();s->data=e;q->rear->next=s;q->rear=s;
}
//出队
void pop_que(Q_p q)
{if(q==NULL){printf("入参为空\n");return;}if(empty_que(q)){printf("队为空\n");return;}if(q->front->next==q->rear){q->rear==q->front;}node_p p=q->front->next;printf("出队元素为:%d\n",p->data);q->front->next=p->next;free(p);p=NULL;	
}
//打印
void show(Q_p q)
{if(q==NULL){printf("入参为空\n");return;}if(empty_que(q)){printf("队为空\n");return;}node_p p=q->front;while(p->next!=NULL){p=p->next;printf("%d\n",p->data);}
}
//销毁
void free_que(Q_p *q)
{if(q==NULL||*q==NULL){printf("入参为空\n");return;}free(*q);*q=NULL;
}
//link_que.h
#ifndef __LINK_QUE_H__
#define __LINK_QUE_H__
#include <stdio.h>
#include <stdlib.h>
typedef int datatype;
typedef struct node
{datatype data;struct node *next;
}node,*node_p;
typedef struct Q
{node_p front;node_p	rear;
}Q,*Q_p;//创建链队
Q_p create_que();
//创建结点
node_p create_node();
//判空
int empty_que(Q_p q);
//入队push_que
void push_que(Q_p q,datatype e);
//出队pop_que
void pop_que(Q_p q);
//打印
void show(Q_p q);
//销毁
void free_que(Q_p *q);#endif
//main.c
#include "link_que.h"int main()
{Q_p q = create_que();push_que(q,90);push_que(q,12);push_que(q,6);show(q);putchar(10);pop_que(q);putchar(10);show(q);putchar(10);push_que(q,1);push_que(q,7);push_que(q,5);push_que(q,4);push_que(q,3);push_que(q,2);show(q);putchar(10);free_que(&q);show(q);return 0;
}

2.二叉树的遍历

//tree.c
#include "tree.h"
//创建结点
tree_p create_node(char data)
{tree_p new = (tree_p)malloc(sizeof(tree));if(new==NULL){printf("空间申请失败\n");return NULL;}new->data=data;return new;	
}
//创建二叉树
tree_p create_tree()
{char data = '\0';scanf("%c",&data);getchar();if(data=='#')return NULL;tree_p T = create_node(data);T->lch=create_tree();T->rch=create_tree();return T;	
}
//先序遍历,根左右
void pri(tree_p T)
{if(T==NULL)return;printf("%c->",T->data);pri(T->lch);pri(T->rch);
}
//中序遍历,左根右
void mid(tree_p T)
{if(T==NULL)return;mid(T->lch);	printf("%c->",T->data);mid(T->rch);
}
//后序遍历,左右根
void last(tree_p T)
{if(T==NULL)return;last(T->lch);last(T->rch);	printf("%c->",T->data);
}
//tree.h
#ifndef __TREE_H__
#define __TREE_H__
#include <stdio.h>
#include <stdlib.h>typedef struct tree_node
{char data;struct tree_node *lch;struct tree_node *rch;
}tree,*tree_p;//创建结点
tree_p create_node(char data);
//创建二叉树
tree_p create_tree();//先序遍历,根左右
void pri(tree_p T);
//中序遍历,左根右
void mid(tree_p T);
//后序遍历,左右根
void last(tree_p T);#endif
//main.c
#include "tree.h"int main()
{tree_p T=create_tree();printf("先序遍历\n");pri(T);putchar(10);printf("中序遍历\n");mid(T);putchar(10);	printf("后序遍历\n");last(T);putchar(10);return 0;
}

3.思维导图

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/265574.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DETR(1):论文详解

文章目录 1. DETR 模型结构2.损失函数2.1 预测结果和GT 的匹配2.2 训练的loss计算3.实验3.1 大物体表现效果好3.2 Transformer Encoder 和Decoder的作用3.3 object query4. 伪代码5. 结论

【《高性能 MySQL》摘录】第 2 章 MySQL 基准测试

文章目录 2.1 为什么需要基准测试2.2 基准测试的策略2.2.1 测试何种指标 2.3 基准测试方法2.3.1 设计和规划基准测试2.3.2 基准测试应该运行多长时间2.3.3 获取系统性能和状态2.3.4 获得准确的测试结果2.3.5 运行基准测试并分析结果2.3.6 绘图的重要性 2.4 基准测试工具…

IntelliJ IDEA 2023:创新不止步,开发更自由 mac/win版

IntelliJ IDEA 2023激活版是一款强大而智能的集成开发环境(IDE)&#xff0c;为开发者提供了一系列先进的功能和工具&#xff0c;帮助他们更高效地编写、调试和测试代码。 IntelliJ IDEA 2023 软件获取 IntelliJ IDEA 2023继承了其前代版本的优秀基因&#xff0c;并在此基础上进…

2月28日代码随想录二叉搜索树中的众数

摸了一个寒假了&#xff0c;得赶一赶了 251.二叉搜索树中的众数 给你一个含重复值的二叉搜索树&#xff08;BST&#xff09;的根节点 root &#xff0c;找出并返回 BST 中的所有 众数&#xff08;即&#xff0c;出现频率最高的元素&#xff09;。 如果树中有不止一个众数&am…

虚拟机JVM

虚拟机 1、定义jvm 假想计算机 运行在操作系统之上 和硬件之间没有直接交互 包括 一套字节码指令、寄存器、栈、垃圾回收、堆 一个存储方法域 jvm:承担一个翻译工作&#xff0c;动态的将java代码编译成操作系统可以识别的机器码。 从软件层面屏蔽了不同操作系统在底层硬件与指…

查看cuda和cudnn版本

查看cuda 打开命令提示符&#xff08;Windows键 R&#xff0c;然后输入cmd并回车&#xff09;。输入nvcc --version或者nvcc -V来获取Cuda的版本信息。 查看cudnn版本 查看Cudnn版本&#xff1a; 进入Cuda安装目录&#xff0c;通常位于C:\Program Files\NVIDIA GPU Computi…

Doris——荔枝微课统一实时数仓建设实践

目录 一、业务介绍 二、早期架构及痛点 2.1 早期架构 2.2 架构痛点 三、技术选型 四、新的架构及方案 五、搭建经验 5.1 数据建模 5.2 数据开发 5.3 库表设计 5.4 数据管理 5.4.1 监控告警 5.4.2 数据备份与恢复 六、收益总结 七、未来规划 原文大佬这篇Doris腾…

STM32 Cubemx配置SPI编程(使用Flash模块)

文章目录 前言一、W25Q64模块介绍二、STM32Cubemx配置SPI三、SPI HAL库操作函数分析3.1查询方式3.2中断方式 四、Flash时序分析1.读器件ID指令2.写使能3.擦除扇区4.页编程5.读数据6.读状态寄存器 五、Flash驱动程序编写1.代码编写测试 总结 前言 本篇文章来为大家讲解一下Flas…

安装极狐GitLab Runner并测试使用

本文继【新版极狐安装配置详细版】之后继续 1. 添加官方极狐GitLab 仓库&#xff1a; 对于 RHEL/CentOS/Fedora&#xff1a; curl -L "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh" | sudo bash2. 安装最新版本的极狐G…

STM32 4位数码管和74HC595

4位数码管 在使用一位数码管的时候&#xff0c;会用到8个IO口&#xff0c;那如果使用4位数码管&#xff0c;难道要使用32个IO口吗&#xff1f;肯定是不行的&#xff0c;太浪费了IO口了。把四个数码管全部接一起共用8个IO口&#xff0c;然后分别给他们一个片选。所以4位数码管共…

GO语言基础总结

多态&#xff1a; 定义一个父类的指针&#xff08;接口&#xff09;&#xff0c;然后把指针指向子类的实例&#xff0c;再调用这个父类的指针&#xff0c;然后子类的方法被调用了&#xff0c;这就是多态现象。 Golang 高阶 goroutine 。。。。。 channel channel的定义 …

LeetCode59. 螺旋矩阵 II(C++)

LeetCode59. 螺旋矩阵 II 题目链接代码 题目链接 https://leetcode.cn/problems/spiral-matrix-ii/ 代码 class Solution { public:vector<vector<int>> generateMatrix(int n) {vector<vector<int>> res(n, vector<int>(n, 0));int startx …

用 Python 自动化处理无聊的事情

“编程最棒的部分就是看到机器做一些有用的事情而获得的胜利。用 Python 将无聊的事情自动化将所有编程视为这些小小的胜利&#xff1b;它让无聊变得有趣。” Hilary Mason&#xff0c;数据科学家兼 Fast Forward Labs 创始人 “我很享受打破东西然后把它们重新组合起来的乐趣…

Vue+SpringBoot打造音乐偏好度推荐系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、系统设计2.1 功能模块设计2.1.1 音乐档案模块2.1.2 我的喜好模块2.1.3 每日推荐模块2.1.4 通知公告模块 2.2 用例图设计2.3 实体类设计2.4 数据库设计 三、系统展示3.1 登录注册3.2 音乐档案模块3.3 音乐每日推荐模块3.4 通知公告模…

【python】网络爬虫与信息提取--scrapy爬虫框架介绍

一、scrapy爬虫框架介绍 scrapy是一个功能强大的网络爬虫框架&#xff0c;是python非常优秀的第三方库&#xff0c;也是基于python实现网络爬虫的重要技术路线。scrapy不是哟个函数功能库&#xff0c;而是一个爬虫框架。 爬虫框架&#xff1a;是实现爬虫功能的一个软件结构和功…

数据价值在线化丨TiDB 在企查查数据中台的应用及 v7.1 版本升级体验

本文介绍了企查查在数据中台建设中使用 TiDB 的经验和应用。通过从 MySQL 到 TiDB 的迁移&#xff0c;企查查构建了基于 TiDB Flink 的实时数仓框架 &#xff0c;充分利用了 TiDB 的分布式架构、MySQL 兼容性和完善的周边工具等特性&#xff0c;实现了数据的在线化处理。2023 年…

搭建 LNMP 架构

一 理论知识 &#xff08;一&#xff09;架构图 &#xff08;二&#xff09;CGI 由来 最早的Web服务器只能简单她响应浏览器发来的HTTP请求&#xff0c;并将存储在服务器上的HTML文件返回给浏览器&#xff0c;也就是静态html文件&#xff0c;但是后期随着网站功能增多网站开…

k8s service的概念以及创建方法

Service 的功能&#xff1a; Service主要用于提供网络服务&#xff0c;通过Service的定义&#xff0c;能够为客户端应用提供稳定的访问地址&#xff08;域名或IP地址&#xff09;和负载均衡功能&#xff0c;以及屏蔽后端Endpoint的变化&#xff0c;是K8s实现微服务的核心资源。…

java面试说自己的优势,2022必看

纯手打“RocketMQ笔记” 第一节&#xff1a;RocketMQ介绍 1.1 核心概念&#xff08;主题、生产者、消费者、消息&#xff09; 1.2 RocketMQ的设计理念和目标&#xff08;设计理念、设计目标&#xff09; 第二节&#xff1a;RocketMQ中消息的发送 2.1 单向[OneWay]发送&#…

深度学习 精选笔记(5)多层感知机

学习参考&#xff1a; 动手学深度学习2.0Deep-Learning-with-TensorFlow-bookpytorchlightning ①如有冒犯、请联系侵删。 ②已写完的笔记文章会不定时一直修订修改(删、改、增)&#xff0c;以达到集多方教程的精华于一文的目的。 ③非常推荐上面&#xff08;学习参考&#x…