双向循环链表实现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.rhkb.cn/news/228454.html

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

相关文章

华为ensp网络设计期末测试题-复盘

网络拓扑图 地址分配表 vlan端口分配表 需求 The device is running!<Huawei>sys Enter system view, return user view with CtrlZ. [Huawei]un in en Info: Information center is disabled. [Huawei]sys S1 [S1]vlan 99 [S1-vlan99]vlan 100 [S1-vlan100]des IT [S1-…

万字长文谈自动驾驶occupancy感知

文章目录 prologuepaper listVision-based occupancy :1. [MonoScene: Monocular 3D Semantic Scene Completion [CVPR 2022]](https://arxiv.org/pdf/2112.00726.pdf)2. [Tri-Perspective View for Vision-Based 3D Semantic Occupancy Prediction [CVPR 2023]](https://arxiv…

跳跃表原理及实现

一、跳表数据结构 跳表是有序表的一种&#xff0c;其底层是通过链表实现的。链表的特点是插入删除效率高&#xff0c;但是查找节点效率很低&#xff0c;最坏的时间复杂度是O(N)&#xff0c;那么跳表就是解决这一痛点而生的。 为了提高查询效率&#xff0c;我们可以给链表加上索…

新手小白:一文带你用vite从零搭建企业级开发环境

在这工作的半年时间里&#xff0c;开始接触了前端开发&#xff0c;技术栈主要用的是 vue2&#xff0c;但是自己利用时间也学习了 vue3&#xff0c;组合式 api 和 vue3 的各种生态比 vue2 好用太多了&#xff0c;特别是状态管理库 pinia 比 vuex 简介很多&#xff0c;构建工具也…

rancher 手册

官方 https://www.rancher.com/https://github.com/rancher/rancherhttps://docs.rke2.io/ rancher kubernetesl yaml deploy rancher serverHelm Deploy Online Rancher DemoHelm & Kubernetes Offline Deploy Rancher v2.7.5 Demohelm upgrade rancher server from v2…

[Linux开发工具]——vim使用

Linux编辑器——vim的使用 一、什么是集成开发环境&#xff1f;二、什么是vim&#xff1f;三、vim的概念四、vim的基本操作五、vim命令模式命令集5.1 移动光标5.2 删除文字5.3 复制粘贴5.4 其他操作 六、vim底行模式命令集6.1 首先在命令模式下shift&#xff1b;进入末行模式。…

uni-app/vue封装etc车牌照输入,获取键盘按键键值

先看下效果如下&#xff1a; 动态图如下 uniapp的keyup获取不到keyCode和compositionstart&#xff0c;compositionend&#xff0c;所以需要监听input节点的keyup事件&#xff0c; 思路以及代码如下&#xff1a; 1.将每一个字符用文本框输入&#xff0c;代码如下 <view …

CEC2017(Python):粒子群优化算法PSO求解CEC2017(提供Python代码)

一、CEC2017简介 参考文献&#xff1a; [1]Awad, N. H., Ali, M. Z., Liang, J. J., Qu, B. Y., & Suganthan, P. N. (2016). “Problem definitions and evaluation criteria for the CEC2017 special session and competition on single objective real-parameter numer…

NullByte

信息收集 # nmap -sn 192.168.1.0/24 -oN live.nmap Starting Nmap 7.94 ( https://nmap.org ) at 2023-12-29 09:23 CST Nmap scan report for 192.168.1.1 Host is up (0.00038s latency). MAC Address: 00:50:56:C0:00:08 (VMware) Nmap scan report for …

PostgreSQL16.1(Windows版本)

1、卸载原有的PostgreSQL &#xfeff; &#xfeff; 点击Next即可。 &#xfeff;&#xfeff; 点击OK即可。 卸载完成。 2、安装 &#xff08;1&#xff09; 前两部直接Next&#xff0c;第二部可以换成自己想要安装的路径。 &#xff08;2&#xff09; 直接点击Next。…

政务大数据能力平台建设方案:文件全文30页,附下载

关键词&#xff1a;智慧政务解决方案&#xff0c;智慧政务建设&#xff0c;智慧政务服务平台&#xff0c;智慧政务大数据&#xff0c;数字政务一体化平台。大数据&#xff0c;政务大数据建设 一、智慧政务建设需求 1、政务服务需求&#xff1a;智慧政务建设需要满足人民群众的…

C++每日一练(8):图像相似度

题目描述 给出两幅相同大小的黑白图像&#xff08;用0-1矩阵&#xff09;表示&#xff0c;求它们的相似度。 说明&#xff1a;若两幅图像在相同位置上的像素点颜色相同&#xff0c;则称它们在该位置具有相同的像素点。两幅图像的相似度定义为相同像素点数占总像素点数的百分比。…

构建基础wlan网络 hcia无线

实验 旁挂组网 二层网络 ac为 dhcp的服务器给ap地址 s1给sta的ip地址 DHCP 业务为直接转发 实验步骤 第一步 poe 开启 poe en 开启 第二步 有线连接 vlan的配置 s1 vlan batch 100 101 连接的端口 port link-type trunk port trunk allow-pass …

pyDAL一个python的ORM(3)建表与表相关操作

1、建表操作define_table() 我们构建2张表&#xff0c;后面示例使用&#xff1a; db.define_table(person,#表名 Field(id, string),#字段名及字段的数据类型 Field(‘name, string), Field(‘dept, string), ) db.define_table(things, Field(id, string), Field(‘nam…

Docker之镜像上传和下载

目录 1.镜像上传 1) 先上百度搜索阿里云 点击以下图片网站 2) 进行登录/注册 3) 使用支付宝...登录 4) 登录后会跳转到首页->点击控制台 5) 点击左上角的三横杠 6) 搜索容器镜像关键词->点击箭头所指 ​ 编辑 7) 进入之后点击实例列表 8) 点击个人实例进入我们的一个…

win/linux 环境查看动态库包含的函数

我们打包了动态库&#xff0c;还要查看是否包含一些函数&#xff0c;需要导出这些函数 在win 环境下可以使用 .def 格式的文件进行操作 ######################################################### 跳过这一步&#xff0c;回到主题&#xff0c;在两个系统平台如何查看动态库包…

轻量封装WebGPU渲染系统示例<55>- 顶点数据更新

当前示例源码github地址: https://github.com/vilyLei/voxwebgpu/blob/feature/material/src/voxgpu/sample/VertexUpdateTest.ts 当前示例运行效果: ​​​​​​​ 此示例基于此渲染系统实现&#xff0c;当前示例TypeScript源码如下: export class VertexUpdateTest {pr…

2023年成都市中等职业学校学生技能大赛“网络搭建及应用”赛项竞赛样卷

2023年成都市中等职业学校学生技能大赛 “网络搭建及应用”赛项竞赛样卷 &#xff08;总分1000分&#xff09; 目录 2023年成都市中等职业学校学生技能大赛 “网络搭建及应用”赛项竞赛样卷 网络建设与调试项目&#xff08;500分&#xff09; 服务器搭建与运维项目&#xff08;…

【PXIE301-208】基于PXIE总线架构的Serial RapidIO总线通讯协议仿真卡

板卡概述 PXIE301-208是一款基于3U PXIE总线架构的Serial RapidIO总线通讯协议仿真卡。该板卡采用Xilinx的高性能Kintex系列FPGA作为主处理器&#xff0c;实现各个接口之间的数据互联、处理以及实时信号处理。板卡支持4路SFP光纤接口&#xff0c;支持一个PCIe x8主机接口&…

Ubuntu中fdisk磁盘分区并挂载、扩容逻辑卷

Ubuntu中fdisk磁盘分区并挂载、扩容逻辑卷 一&#xff1a;fdisk磁盘分区并挂载1.查看磁盘分区信息2.分区3.强制系统重新读取分区(避免重启系统)4.格式化分区5.创建挂载目录6.设置开机自动挂载&#xff1a;7.验证并自动挂载(执行了该命令不需要重启系统)8.查看挂载007.异常情况处…