当前位置: 首页 > news >正文

【带头学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.lryc.cn/news/236602.html

相关文章:

  • (四)什么是Vite——冷启动时vite做了什么(源码、middlewares)
  • Docker部署MinIO对象存储服务器结合Cpolar实现远程访问
  • C#入门(1):程序结构、数据类型
  • Scala---元组
  • 【Linux】冯诺依曼体系结构、操作系统、进程概念、进程状态、环境变量、进程地址空间
  • 【hive-解决】HiveAccessControlException Permission denied: CREATEFUNCTION
  • 内网穿透的应用-通过内网穿透快速搭建公网可访问的Spring Boot接口调试环境
  • 解决 uniapp 开发微信小程序 不能使用本地图片作为背景图 问题
  • 常用中间件封装思路粗记
  • 探索SPI:深入理解原理、源码与应用场景
  • Web3名词解释
  • Vatee万腾外汇市场新力量:vatee科技决策力
  • 【HarmonyOS开发】配置开发工具DevEco Studio
  • 探索亚马逊大语言模型:开启人工智能时代的语言创作新篇章
  • zabbix-proxy分布式监控
  • springboot生成PDF,并且添加水印
  • Tensorflow2.0:CNN、ResNet实现MNIST分类识别
  • 本地jar导入maven
  • 数据结构与算法【堆】的Java实现
  • 同创永益联合红帽打造一站式数字韧性解决方案
  • c++ call_once 使用详解
  • 【rosrun diagnostic_analysis】报错No module named rospkg | ubuntu 20.04
  • 高防CDN有什么作用?
  • 盛元广通开放实训室管理系统2.0
  • 3D建模基础教程:编辑多边形功能命令快捷方式
  • SaleSmartly新增AI意图识别触发器!让客户享受更精准的自动化服务
  • 计算机毕业设计选题推荐-个人博客微信小程序/安卓APP-项目实战
  • 一篇详解,Postman设置token依赖步骤
  • 音频录制实现 绘制频谱
  • nginx代理本地服务请求,避免跨域;前端图片压缩并上传