使用c语言实现一个单链表的增删查改基本操作代码,并且生成菜单使用它

时间: 2024-03-01 10:50:59 浏览: 19
好的,以下是使用 C 语言实现单链表的增删查改基本操作的代码,并且生成菜单使用它。 ```c #include <stdio.h> #include <stdlib.h> // 定义链表结构体 typedef struct Node { int data; struct Node* next; } Node; // 初始化链表 Node* initList() { Node* head = (Node*)malloc(sizeof(Node)); head->next = NULL; return head; } // 增加节点 void addNode(Node* head, int data) { Node* p = head; while (p->next != NULL) { p = p->next; } Node* newNode = (Node*)malloc(sizeof(Node)); newNode->data = data; newNode->next = NULL; p->next = newNode; } // 删除节点 void deleteNode(Node* head, int data) { Node* p = head->next; Node* pre = head; while (p != NULL) { if (p->data == data) { pre->next = p->next; free(p); return; } pre = p; p = p->next; } } // 查找节点 Node* findNode(Node* head, int data) { Node* p = head->next; while (p != NULL) { if (p->data == data) { return p; } p = p->next; } return NULL; } // 修改节点 void modifyNode(Node* head, int oldData, int newData) { Node* p = findNode(head, oldData); if (p != NULL) { p->data = newData; } } // 打印链表 void printList(Node* head) { Node* p = head->next; while (p != NULL) { printf("%d ", p->data); p = p->next; } printf("\n"); } // 释放链表 void freeList(Node* head) { Node* p = head; while (p != NULL) { Node* tmp = p; p = p->next; free(tmp); } } // 打印菜单 void printMenu() { printf("\n"); printf("1. 增加节点\n"); printf("2. 删除节点\n"); printf("3. 查找节点\n"); printf("4. 修改节点\n"); printf("5. 打印链表\n"); printf("6. 退出程序\n"); printf("请选择操作:"); } int main() { Node* head = initList(); int choice = 0; do { printMenu(); scanf("%d", &choice); switch (choice) { case 1: { int data; printf("请输入要增加的数据:"); scanf("%d", &data); addNode(head, data); printf("增加成功!\n"); break; } case 2: { int data; printf("请输入要删除的数据:"); scanf("%d", &data); deleteNode(head, data); printf("删除成功!\n"); break; } case 3: { int data; printf("请输入要查找的数据:"); scanf("%d", &data); Node* p = findNode(head, data); if (p != NULL) { printf("找到了该节点,值为:%d\n", p->data); } else { printf("没有找到该节点!\n"); } break; } case 4: { int oldData, newData; printf("请输入要修改的数据:"); scanf("%d", &oldData); printf("请输入新的数据:"); scanf("%d", &newData); modifyNode(head, oldData, newData); printf("修改成功!\n"); break; } case 5: { printf("当前链表数据为:"); printList(head); break; } case 6: { printf("程序已退出!\n"); break; } default: { printf("输入错误,请重新输入!\n"); break; } } } while (choice != 6); freeList(head); return 0; } ``` 以上是基本的单链表增删查改操作及菜单的实现代码。您可以根据需要进行调整。

相关推荐

最新推荐

recommend-type

单片机C语言下LCD多级菜单的一种实现方法

绍了在C 语言环境下,在LCD液晶显示屏上实现多级嵌套菜单的一种简便方法,提出了一个 结构紧凑、实用的程序模型。
recommend-type

使用C语言实现CRC校验的方法

本篇文章是对使用C语言实现CRC校验的方法进行了详细的分析介绍,需要的朋友参考下
recommend-type

C++语言数据结构 串的基本操作实例代码

主要介绍了C语言数据结构 串的基本操作实例代码的相关资料,需要的朋友可以参考下
recommend-type

c语言实现输入一组数自动从大到小排列的实例代码

下面小编就为大家带来一篇c语言实现输入一组数自动从大到小排列的实例代码。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
recommend-type

利用带头结点的单链表实现两个集合的并、交、差运算.docx

利用带头结点的单链表实现两个集合的并、交、差运算 1.题目重述 2.题目功能描述 3. 概要设计图 4. 程序源代码及注释 5. 流程图 6. 截图与数据分析 7.所采用的存储结构的优缺点及采用理由 8.实验心得体会
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

SPDK_NVMF_DISCOVERY_NQN是什么 有什么作用

SPDK_NVMF_DISCOVERY_NQN 是 SPDK (Storage Performance Development Kit) 中用于查询 NVMf (Non-Volatile Memory express over Fabrics) 存储设备名称的协议。NVMf 是一种基于网络的存储协议,可用于连接远程非易失性内存存储器。 SPDK_NVMF_DISCOVERY_NQN 的作用是让存储应用程序能够通过 SPDK 查询 NVMf 存储设备的名称,以便能够访问这些存储设备。通过查询 NVMf 存储设备名称,存储应用程序可以获取必要的信息,例如存储设备的IP地址、端口号、名称等,以便能
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。