【带头学C++】----- 七、链表 ---- 7.5 学生管理系统(链表--上)

目录

1.main函数设计

 2.定义Node节点类型

3.链表插入结点

在main函数中调用插入函数、打印函数

插入结点函数实现(头插法)

 插入结点函数实现(尾插法)

遍历链表函数实现 

4.演示插入、遍历结果 


目录

1.main函数设计

 2.定义Node节点类型

3.链表插入结点

在main函数中调用插入函数、打印函数

插入结点函数实现

遍历链表函数实现 


本节分上下两节,主要是对链表进行一个实操演练。本章节小节记录的是数据链表的学生管理系统实现方法,主要有链表的创建、链表插入、链表遍历,此前所学还是单向链表,后续会退出单向循环链表、双向链表、双向循环链表等;

1.main函数设计


int main()
{helpMessage();while(1){char cmd[64] = "";cout<<"请输入操作指令: ";cin >> cmd;if(strcmp(cmd,"help") == 0){helpMessage();}else if(strcmp(cmd,"insert") == 0){cout << "-------insert-------"<<endl;}else if(strcmp(cmd,"print") == 0){cout << "-------print-------"<<endl;}else if(strcmp(cmd,"search") == 0){cout << "-------search-------"<<endl;}else if(strcmp(cmd,"delete") == 0){cout << "-------delete-------"<<endl;}else if(strcmp(cmd,"free") == 0){cout << "-------free-------"<<endl;}else if(strcmp(cmd,"clear") == 0){system("cls");}else if(strcmp(cmd,"quit") == 0){return 0;}}return 0;}

link.cpp

#include "link.h"Link::Link()
{}void  helpMessage()
{cout<<"  *********************************"<<endl;cout<<"  *   help:帮助信息               *"<<endl;cout<<"  *   insert:插入链表节点         *"<<endl;cout<<"  *   print:遍历链表              *"<<endl;cout<<"  *   search:查询链表某个节点     *"<<endl;cout<<"  *   delete:删除链表某个节点     *"<<endl;cout<<"  *   free:释放整个链表           *"<<endl;cout<<"  *   quit:退出程序               *"<<endl;cout<<"  *   clear:清空屏幕              *"<<endl;cout<<"  *********************************"<<endl;
}

 

 2.定义Node节点类型

struct STU_NODE{//数据域int  num;char name[32];//指针域STU_NODE *next;
};

3.链表插入结点

在main函数中调用插入函数、打印函数

插入结点函数实现(头插法)

//链表插入之 在头部之前插入(头插法)
STU_NODE *insertLink(STU_NODE *head,STU_NODE tmp){//从堆区申请带插入的节点空间STU_NODE *pnode = new STU_NODE();//给空间赋值*pnode = tmp;pnode->next = nullptr;//判断链表这个结点为不为空if(nullptr == head){  //不存在head = pnode;}else{//链表存在pnode->next = head;head = pnode;}return  head;
}

 插入结点函数实现(尾插法)

//链表插入之 在尾部之后插入(尾插法)
STU_NODE *insertLink(STU_NODE *head,STU_NODE tmp){//从堆区申请带插入的节点空间STU_NODE *pnode = new STU_NODE();//给空间赋值*pnode = tmp;pnode->next = nullptr;//判断链表这个结点为不为空if(nullptr == head){  //不存在head = pnode;}else{//链表存在//寻找尾节点STU_NODE *pnewnode = head;while(pnewnode->next != nullptr)pnewnode = pnewnode->next;//在尾节点插入pnodepnewnode->next = pnode;}return  head;
}

遍历链表函数实现 

void printLink(STU_NODE *head){if(nullptr == head){  //不存在cout<<"Link is not exist"<<endl;return;}STU_NODE *node = head;while(node != nullptr){cout<<node->num<<" "<<node->name<<endl;node = node->next;}return;
}

4.演示插入、遍历结果 

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

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

相关文章

在bootstrap中,能不能对同一个容器,既使用类row进行网格设计,又使用类d-flex实现弹性盒子的性能?

问&#xff1a;在bootstrap中&#xff0c;能不能对同一个容器&#xff0c;既使用类row进行网格设计&#xff0c;又使用类d-flex实现弹性盒子的性能&#xff1f; 是的&#xff0c;你可以在Bootstrap中同时使用row类进行网格设计和d-flex类实现弹性盒子。这两个类可以结合使用&a…

React中的Redux:简介和实例代码

React是一个流行的JavaScript库&#xff0c;用于构建用户界面。它提供了一种简单而强大的方式来构建交互式的界面。Redux是一个用于管理应用程序状态的JavaScript库。它可以与React一起使用&#xff0c;以帮助管理React应用程序的状态。 引言 在本文中&#xff0c;我们将介绍R…

linux 安装中文字体

问题 用DevTools调试虚拟机中的headless模式的chromium时发现调试窗口显示的都是□□□&#xff08;除了英文字符&#xff09;&#xff0c;一查发现是因为虚拟机中的CentOS自带的只有英文字体&#xff0c;不包含中文字体&#xff0c;要显示中文字符需要我们自己安装中文字体。 …

nvm 安装后出现的各种问题解决方法

1、nvm安装后无法安装node版本 首先需要确定删除了电脑上所有的node版本&#xff0c;如果不会卸载那么请移步到 查看 &#xff0c;我们是要通过nvm来下载node环境&#xff0c;所以之前下载的node有冲突&#xff0c;所以都要清除。 2、下载后的nvm环境&#xff0c;无法使用node、…

《深入浅出OCR》实战:基于PGNet的端到端识别

✨专栏介绍: 经过几个月的精心筹备,本作者推出全新系列《深入浅出OCR》专栏,对标最全OCR教程,具体章节如导图所示,将分别从OCR技术发展、方向、概念、算法、论文、数据集等各种角度展开详细介绍。 💙个人主页: GoAI |💚 公众号: GoAI的学习小屋 | 💛交流群: 7049325…

团结引擎已全面支持 OpenHarmony 操作系统

Unity 中国宣布与开放原子开源基金会达成平台级战略合作。 据称团结引擎已全面支持 OpenHarmony 操作系统&#xff0c;同时将为 OpenHarmony 生态快速带来更多高品质游戏与实时 3D 内容。Unity 称现在用户可以 “在 OpenHarmony 框架中感受到与安卓和 iOS 同样丝滑的游戏体验”…

【Linux】Alibaba Cloud Linux 3 yum 安装 PHP8.1

一、系统安装 请参考 【Linux】Alibaba Cloud Linux 3 中第二硬盘、MySQL8.、MySQL7.、Redis、Nginx、Java 系统安装 二、安装源 rpm -ivh --nodeps https://rpms.remirepo.net/enterprise/remi-release-8.rpm sed -i s/PLATFORM_ID"platform:al8"/PLATFORM_ID&q…

汇编层面有三个主要的操作对象

1.为啥会有addi指令&#xff1f; 在汇编层面有三个主要的操作对象&#xff1a;寄存器&#xff0c;内存&#xff0c;立即数&#xff0c;它们是完全不同&#xff0c;不可以混淆&#xff0c;组织结构也不一样的不同对象&#xff0c;所以不能单纯拿针对寄存器的指令去处理内存和立…

SQL 文本函数

前言 SQL文本函数是SQL语言中非常有用的一类函数&#xff0c;它们用于处理和操作字符串数据。在实际应用中&#xff0c;我们经常需要对数据库中的文本数据进行各种操作&#xff0c;比如提取子串、替换子串、拼接字符串等等。而SQL文本函数可以帮助我们轻松地完成这些任务&#…

Modbus转Profinet网关在金银精炼控制系统中应用案例

金银精炼控制系统中采用Modbus转Profinet网关&#xff08;XD-MDPN100&#xff09;连接1200plc与PID控制阀门进行通讯&#xff0c;通过控制PID阀门的大小来实现温度的恒温控制。这一系统的好处在于它能够提高金银精炼过程的效率和精确度。PID控制阀门可以根据温度的变化实时调整…

Michael Jordan最新报告:去中心化机器学习中的契约、不确定性和激励

‍ ‍导读 11月3日&#xff0c;智源研究院学术顾问委员会委员、机器学习泰斗Michael Jordan在以“新一代人工智能前沿”为主题的2023北京论坛 新工科专题论坛上&#xff0c;发表了题为Contracts, Uncertainty, and Incentives in Decentralized Machine Learning&#xff08;去…

一步一步教你如何在Windows 10上使用Java,包括下载、安装和配置等

Java开发工具包(JDK)是用于Java编程的软件,与Java虚拟机(JVM)和Java运行时环境(JRE)一起使用。JDK包括编译器和类库,允许开发人员创建可由JVM和JRE执行的Java程序。 在本教程中,你将学习在Windows上安装Java开发工具包。 检查是否安装了Java 在安装Java开发工具包之…

01_SHELL编程之变量定义(一)

SHELL编程 该课程主要包括以下内容&#xff1a; ① Shell的基本语法结构 如&#xff1a;变量定义、条件判断、循环语句(for、until、while)、分支语句、函数和数组等&#xff1b; ② 基本正则表达式的运用&#xff1b; ③ 文件处理三剑客&#xff1a;grep、sed、awk工具的使用&…

阿里云oss使用签名url上传时的一些配置注意事项

我来讲一下测试下来遇到的问题点和解决方案&#xff1a; 一、配置相关问题 你可以先按照阿里云的文档把一些oss的基本配置弄好&#xff0c;再看下面的内容&#xff1b; 配置跨域访问规则&#xff1b; 这是非常重要的一步。默认情况下&#xff0c;oss不允许上传文件时携带Cont…

什么是NoSQL?什么是redis?redis是做什么的?

redis官网 NoSQL泛指非关系型数据库&#xff0c;redis是其中的一种&#xff0c;Redis是发展最快的。 什么是NoSQL&#xff1f; NoSQL是一个广义的术语&#xff0c;指的是非关系型数据库&#xff0c;不同于传统的关系型数据库&#xff08;如MySQL、Oracle等&#xff09;。它没有…

数字化转型具体包含哪些内容?

数字化转型是一个广泛且多方面的过程&#xff0c;涉及将数字技术集成到组织或企业的各个方面&#xff0c;从根本上改变其运营和交付价值的方式。它包含广泛的活动、战略和举措&#xff0c;这些活动、战略和举措可能会根据组织的具体目标和需求而有所不同。以下是数字化转型的一…

html-网站菜单-点击菜单展开相应的导航栏,加减号可切换

一、效果图 1.点击显示菜单栏&#xff0c;点击x号关闭&#xff1b; 2.点击一级菜单&#xff0c;展开显示二级&#xff0c;并且加号变为减号&#xff1b; 3.点击其他一级导航&#xff0c;自动收起展开的导航。 二、代码实现 <!DOCTYPE html> <html><head>&…

c++中的特殊类设计

文章目录 1.请设计一个类&#xff0c;不能被拷贝2. 请设计一个类&#xff0c;只能在堆上创建对象3. 请设计一个类&#xff0c;只能在栈上创建对象4. 请设计一个类&#xff0c;不能被继承5. 请设计一个类&#xff0c;只能创建一个对象(单例模式) 1.请设计一个类&#xff0c;不能…

SIMULIA|Abaqus 2022x新功能介绍第三弹

Abaqus 线性分析的功能增强 模态分析中增加connector单元的输出 模态线性动力学分析中增加下列Connector单元的输出&#xff0c;无需指定* connector MOTION即可实现&#xff1a;AXIAL&#xff0c;BUSHING&#xff0c;CARDAN&#xff0c;CARTESIAN和ROTATION。 而且改进了CT…

vue2组件通信中的一些拓展(props,emit,ref父子双向传参)

说明 我上一篇文章中基本对vue所有的数据通信方法进行了一个整理归纳。 其实我并没有像传统的那样去罗列,比如父传子有props,ref,子传父为emit,兄弟用$bus等等。 因为在我的实际练习和业务开发中,props,emit,ref等可以实现父子数据互传,这里就涉及一个比较重要的编程思维,函…