使用链表学生信息输入输出

#include <iostream>

#include <cstring>

using namespace std;

struct Student {

char id[10];

char name[101];

int score;

Student* next;

};

int main() {

Student* head = nullptr;

Student* tail = nullptr;

while (true) {

Student* s = new Student;

cin >> s->id;

if (strcmp(s->id, "0") == 0) {

delete s;

break;

}

cin >> s->name >> s->score;

s->next = nullptr;

if (head == nullptr) {

head = s;

tail = s;

} else {

tail->next = s;

tail = s;

}

}

Student* current = head;

while (current!= nullptr) {

cout << current->id << " " << current->name << " " << current->score << endl;

Student* nextNode = current->next;

delete current;

current = nextNode;

}

return 0;

}

在 main 函数开始处,定义了两个指针 head 和 tail,它们都初始化为 nullptr,分别用于指向链表的头节点和尾节点。初始时链表为空,所以都指向空地址。

  • 首先,让指针 current 指向链表的头节点(current = head;),然后进入循环,只要 current 不为空指针,就执行循环体内容。
  • 在循环体中,先通过 cout << current->id << " " << current->name << " " << current->score << endl; 输出当前节点所存储的学生学号、姓名和成绩信息。
  • 接着,保存当前节点的下一个节点指针到 nextNode 变量(Student* nextNode = current->next;),这是为了在释放当前节点内存后还能找到后续节点。
  • 然后,使用 delete current; 释放当前节点所占用的内存空间,最后将 current 指针更新为下一个节点(current = nextNode;),继续下一轮循环,直到遍历完整个链表,所有节点内存都被释放,current 变为 nullptr 时循环结束。
全部评论

相关推荐

07-09 18:33
门头沟学院 Java
这么逆天每年都有人去???&nbsp;填多益网申就是大型的服从性测试
鲁大牛:辅导员在群里发了这个公司我就申了一下。网申居然要写当场开摄像头写两篇不少于三百字的作文。太逆天了
点赞 评论 收藏
分享
06-17 00:26
门头沟学院 Java
程序员小白条:建议换下项目,智能 AI 旅游推荐平台:https://github.com/luoye6/vue3_tourism_frontend 智能 AI 校园二手交易平台:https://github.com/luoye6/vue3_trade_frontend GPT 智能图书馆:https://github.com/luoye6/Vue_BookManageSystem 选项目要选自己能掌握的,然后最好能自己拓展的,分布式这种尽量别去写,不然你只能背八股文了,另外实习的话要多投,尤其是学历不利的情况下,多找几段实习,最好公司title大一点的
无实习如何秋招上岸
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-07 13:35
虽然不怎么光彩,经过这件事,可能我真的要去认同“面试八股文早该淘汰!不会用AI作弊的程序员=新时代文盲!”这句话了
HellowordX:Ai的出现是解放劳动力的,不是用来破坏公平竞争环境的,这样下去,轻则取消所有线上面试,严重了会影响整个行业对所有人产生影响,企业会拉高入职考核各种离谱考核会层出不穷
你找工作的时候用AI吗?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务