双向循环链表实现C语言关键字中英翻译机 ฅ( ̳• · • ̳ฅ)

目录

1.双向循环链表的声明与定义:

2. 创建链表并对节点中的数据赋初值

3. 插入节点并链接

4.中英翻译

5. 小游戏的实现

 6.菜单的实现

7. 释放内存

8.在主函数中用刚才定义的函数实现各种代码 

输入样例: 


实现方法:双向循环链表来实现,各个函数来实现各种功能,如game函数是实现程序小游戏的代码,translate是实现翻译的代码,将各个函数的功能在主函数中实现 。

OK,让我们开始实现吧~

1.双向循环链表的声明与定义:

//双向链表的声明
typedef struct Node
{char data[20];char chinese[20];char english[20];struct Node* prev;struct Node* next;
} Node;

其中chinese存储中文信息,english存储英文信息,而data存储字节信息 

2. 创建链表并对节点中的数据赋初值

//创建链表并对节点中的数据初始值
Node* createNode(char* chinese, char* english,char* data)
{Node* newNode = (Node*)malloc(sizeof(Node));strcpy(newNode->data, data);strcpy(newNode->chinese, chinese);strcpy(newNode->english, english);newNode->prev = NULL;newNode->next = NULL;return newNode;
}

3. 插入节点并链接

//插入节点并链接
void insertNode(Node** head, char* chinese, char* english,char* data)
{Node* newNode = createNode(chinese, english,data);if (*head == NULL)//如果节点为空,就将新创建的节点赋值给*head{*head = newNode;(*head)->prev = *head;(*head)->next = *head;}else//否则就执行插入链接操作{Node* lastNode = (*head)->prev; newNode->next = *head;newNode->prev = lastNode;(*head)->prev = newNode;lastNode->next = newNode;}
}

4.中英翻译

//中英翻译
void translate(Node* head, char* keyword) 
{Node* current = head;do {if (strcmp(current->chinese, keyword) == 0)//运用strcmp进行比较,如果相同就打印对应的翻译{printf("%s\n", current->english);return;}if (strcmp(current->english, keyword) == 0){printf("%s\n", current->chinese);return;}current = current->next;//如果没找到就持续寻找下一个} while (current != head);//注意结束标志不是NULLprintf("Translation not found.\n");
}

5. 小游戏的实现

//小游戏的实现
void game(Node* head)
{char data[20];char string[20];Node* current = head;srand(time(NULL));int k = rand() % 11;//设置一个随机数for (int i = 0; i < k; i++){current = current->next;//通过随机数来随机指定当前链表的位置}printf("请输入当前英文关键字的翻译:%s->:", current->english);scanf("%s", string);//通过随机数所指定链表的值与当前输入的值进行匹配if (strcmp(current->chinese,string) == 0){printf("你能输出它的字节大小吗(没有就写没有)->:");scanf("%s", data);//当上一个匹配没问题,就进行字节的匹配if (strcmp(current->data, data) == 0){printf("你真是太厉害了!\n");printf("恭喜你,挑战成功!\n");exit(0);}else if (strcmp(current->data, data) != 0){int count = 2;//挑战失败那再给挑战者两次机会printf("很遗憾,挑战失败!看你表现优异,再给你两次机会吧!\n");while (count){printf("你能输出它的字节大小吗(没有就写没有)->:");scanf("%s", data);if (strcmp(current->data, data) == 0){printf("你真是太厉害了!\n");printf("恭喜你,挑战成功!\n");exit(0);}else printf("挑战失败!\n");count--;}printf("小菜鸡,再练练再来挑战吧!\n");exit(0);}}
}

 6.菜单的实现

void menu1()
{printf("---------------------------------------------------\n");printf("-------------<c语言关键字翻译机>-------------------\n");printf("-------------<输入bye退出程序>---------------------\n");printf("-------------<强化训练输入play>--------------------\n");printf("---------------------------------------------------\n");
}

7. 释放内存

void freeList(Node* head) 
{if (head == NULL) {return;}Node* current = head;Node* next;do {next = current->next;free(current);current = next;} while (current != head);
}

8.在主函数中用刚才定义的函数实现各种代码 

int main() 
{Node* head = NULL;insertNode(&head, "浮点型", "float","4");//要匹配的数据的插入insertNode(&head, "基本整型", "int","4");insertNode(&head, "长整型","longlong","8");insertNode(&head, "结构体类型", "struct","没有");insertNode(&head, "联合体类型", "union","没有");insertNode(&head, "否则", "else","没有");insertNode(&head, "双精度浮点型", "double","8");insertNode(&head, "如果", "if","没有");insertNode(&head, "开关", "switch","没有");insertNode(&head, "循环", "while","没有");char keyword[20];menu1();while (1) {printf("请输入中文的名词或英文的单词(输入 bye 退出)->:");scanf("%s", keyword);if (strcmp(keyword, "bye") == 0) {printf("退出程序!\n");break; }if (strcmp(keyword, "play") == 0){game(head);}translate(head, keyword);}freeList(head);return 0;
}

输入样例: 

样例1: 

样例2:

 

博客到这里也是结束了,喜欢的小伙伴可以点赞加关注支持下博主,这对我真的很重要~~ 

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

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

相关文章

对话面试官----jvm模型

JVM&#xff08;Java Virtual Machine&#xff09;是 Java 虚拟机的缩写&#xff0c;它是一个运行 Java 字节码的虚拟计算机。JVM 提供了一个平台独立的执行环境&#xff0c;能够在不同的操作系统上运行 Java 程序。JVM 模型由类加载器、运行时数据区域、执行引擎等组成&#x…

CentOS上安装MySQL 8.0的详细教程

CentOS上安装MySQL 8.0的详细教程 大家好&#xff0c;我是免费搭建查券返利机器人赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天我将为大家分享一篇关于在CentOS上安装MySQL 8.0的详细教程。MySQL是一个强大…

UDP协议工作原理及实战(二)UDP客户端代码实现

这个是一个测试我们写的函数是否正确。 启动服务&#xff1a;这里边的udpsocket->bind(port)就是对端口号进行连接。

开发知识点-Weblogic

Weblogic 介绍CVE_2018_2628poc-yaml-weblogic-ssrfpoc-yaml-weblogic-cve-2017-10271poc-yaml-weblogic-cve-2019-2725poc-yaml-weblogic-cve-2019-2729-1poc-yaml-weblogic-cve-2019-2729-2poc-yaml-weblogic-cve-2020-14750poc-yaml-weblogic-local-cve-2022-21371-file-inc…

链路层、网络层、传输层、应用层长度

参考&#xff1a;链路层、网络层、传输层、应用层长度 链接&#xff1a;https://blog.csdn.net/qq_41658597/article/details/120683870 目录 1、概述2、TCP、UDP数据包最大值的确定3、TCP、UDP数据包最小值的确定4、实际应用IP层 1、概述 首先要看TCP/IP协议&#xff0c;涉及到…

2024 年软件工程将如何发展

软件开发目前正在经历一场深刻的变革&#xff0c;其特点是先进自动化的悄然但显着的激增。这一即将发生的转变有望以前所未有的规模简化高质量应用程序的创建和部署。 它不是单一技术引领这一演变&#xff0c;而是创新的融合。从人工智能(AI) 和数字孪生技术&#xff0c;到植根…

Feature Prediction Diffusion Model for Video Anomaly Detection 论文阅读

Feature Prediction Diffusion Model for Video Anomaly Detection论文阅读 Abstract1. Introduction2. Related work3. Method3.1. Problem Formulation3.2. Feature prediction diffusion module 3.3. Feature refinement diffusion module4. Experiments and discussions4.1…

数据探查系列:如何进行有意义的探索性数据分析(EDA)

如何进行有意义的探索性数据分析&#xff08;EDA&#xff09; 目录 1. 设置 1.1 导入库1.2 导入数据1.3 数据集特征1.4 数据集属性 2. 探索训练集和测试集 2.1 训练集 - 快速概览2.2 训练集 - 基本统计2.3 测试集 - 快速概览2.4 测试集 - 基本统计 3. 特征分布4. 数据不平衡检查…

什么是迁移学习(Transfer Learning)?定义,优势,方法

迄今为止&#xff0c;大多数人工智能&#xff08;AI&#xff09;项目都是通过监督学习技术构建的。监督学习是一种从无到有构建机器学习&#xff08;ML&#xff09;模型的方法&#xff0c;它对推动AI发展起到了关键作用。然而&#xff0c;由于需要大量的数据集和强大的计算能力…

openmediavault(OMV) (19)云相册(3)mt-photos

简介 MT Photos是一款为Nas用户量身打造的照片管理系统。通过AI技术,自动将您的照片整理、分类,包括但不限于时间、地点、人物、照片类型。可以在任何支持Docker的系统中运行它。详情可查看mtmt.tech官网,mt-photos是付费订阅使用的,也可以一次性付费永久使用,具体使用mt…

机器学习系列--R语言随机森林进行生存分析(1)

随机森林&#xff08;Breiman 2001a&#xff09;&#xff08;RF&#xff09;是一种非参数统计方法&#xff0c;需要没有关于响应的协变关系的分布假设。RF是一种强大的、非线性的技术&#xff0c;通过拟合一组树来稳定预测精度模型估计。随机生存森林&#xff08;RSF&#xff0…

观察者模式概述

观察者模式,它用于建立一种对象与对象之间的依赖关系&#xff0c; 一个对象发生改变将自动通知其他对象&#xff0c; 其他对象将相应做出反应。在观察者模式种&#xff0c;发生改变的对象称为观察目标&#xff0c; 而被通知的对象称为观察者&#xff0c;一个观察目标可以对应多…

docker学习(二十、network使用示例host、none)

文章目录 一、host应用示例总结 二、none应用示例总结 network相关内容&#xff1a; docker学习&#xff08;十八、network介绍&#xff09; docker学习&#xff08;十九、network使用示例bridge&#xff09; docker学习&#xff08;二十、network使用示例host、none&#xff0…

【头歌实训】Spark 完全分布式的安装和部署

文章目录 第1关&#xff1a; Standalone 分布式集群搭建任务描述相关知识课程视频Spark分布式安装模式示例集群信息配置免密登录准备Spark安装包配置环境变量修改 spark-env.sh 配置文件修改 slaves 文件分发安装包启动spark验证安装 编程要求测试说明答案代码 第1关&#xff1…

Unity 代码控制Text自适应文本高度

在使用代码给Text赋值时&#xff0c;且文本有多段&#xff0c;并需要根据实际文本高度适配Text组件的高度时&#xff0c;可以使用以下方法&#xff1a; //Text文本 public TextMeshProUGUI text;void Start() {//代码赋值文本text.text "好!\n很好!\n非常好!";//获…

QT QPluginloader 加载失败,出现Unknown error 0x000000c1的问题

最近在学习Qt的插件开发&#xff0c;在加载插件时&#xff0c;一直失败&#xff0c;用如下代码加载并打印错误信息。 QDir dir("./testplugin.dll"); QPluginLoader pluginLoader(dir.absolutePath());//需要绝对路径 pluginLoader.load(); qDebug()<< "…

postman入门使用

前言 对于postman的基础其实很容易上手实现&#xff0c;也有很多教程。 对于小编我来说&#xff0c;也基本可以实现开发任务。 但是今年我们的高级测试&#xff0c;搞了一下postman&#xff0c;省去很多工作&#xff0c;让我感觉很有必要学一下 这篇文章是在 高级测试工程师ht…

爬虫工作量由小到大的思维转变---<第三十章 Scrapy Redis 第一步(配置同步redis)>

前言: 要迈向scrapy-redis进行编写了;首要的一步是,如何让他们互通?也就是让多台电脑连一个任务(这后面会讲); 现在来做一个准备工作,配置好redis的同步!! 针对的是windows版本的redis同步,实现主服务和从服务共享一个redis库; 正文: 正常的redis for windows 的安装这里就…

docker +gitee+ jenkins +maven项目 (一)

jenkins环境和插件配置 文章目录 jenkins环境和插件配置前言一、环境版本二、jenkins插件三、环境安装总结 前言 现在基本都是走自动化运维&#xff0c;想到用docker 来部署jenkins &#xff0c;然后jenkins来部署java代码&#xff0c;做到了开箱即用&#xff0c;自动发布代码…

spring boot 配置全局日期和时间格式

spring boot 为项目配置 全局日期和时间格式化yyyy-MM-dd HH:mm:ss 方式一&#xff1a;代码配置全局日期和时间格式化 /*** author hua*/ Configuration public class WebConfiguration implements WebMvcConfigurer {/*** 项目全局时间格式化*/ Bean public ObjectMapper get…