ZBLOG

#include using namespace std; // 定义学生结构体 struct Student{ int id; string name; int age; }; // 定义链表节点结构体 struct Node{ Student data; // 数据域,存储学生信息 Node* next; // 指针域,指向下一个节点 }; // 创建链表并返回头节点指针 Node* createList(){ ...

这段代码实现了一个简单的学生信息管理系统,其中涉及到链表的基本操作:

  1. 创建链表:定义一个头节点并返回其指针。
  1. Node* createList(){
  2. Node* head = new Node(); // 头节点不存放数据,只是起到连接作用
  3. head->next = nullptr; // 初始化为空链表
  4. return head;
  5. }
  1. 插入新节点:在链表末尾插入新节点。
  1. void insertNode(Node* head, Student s){
  2. Node* newNode = new Node(); // 新建节点
  3. newNode->data = s; // 将学生信息存储在新节点中
  4. Node* p = head;
  5. while(p->next != nullptr){ // 找到最后一个节点
  6. p = p->next;
  7. }
  8. p->next = newNode; // 将新节点插入到末尾
  9. }
  1. 删除指定id的节点:遍历链表查找指定id的学生信息所在位置,并删除该节点。
  1. bool deleteNode(Node* head, int id){
  2. Node* p1 = head;
  3. Node* p2 = head->next;
  4. while(p2 != nullptr && p2->data.id != id){ // 查找指定id的学生信息所在位置
  5. p1 = p2;
  6. p2 = p2->next;
  7. }
  8. if(p2 == nullptr){
  9. return false; // 未找到
  10. }
  11. p1 -> next=p2 -> next ; // 删除节点
  12. delete p2 ;
  13. return true;
  14. }
  1. 查找指定id的节点:遍历链表查找指定id的学生信息所在位置,并返回其节点指针。
  1. Node* findNode(Node* head, int id){
  2. Node *p=head -> next ;
  3. while (p != NULL &&p ->data.id!=id) { // 遍历链表查找
  4. p= p -> next ;
  5. }
  6. if (p == NULL ) {
  7. return NULL ;
  8. }else{
  9. return p ;
  10. }
  11. }
  1. 统计节点个数:遍历链表并统计节点个数。
  1. int countNodes(Node* head){
  2. int count=0;
  3. Node *p=head -> next ;
  4. while (p !=NULL ){
  5. count++;
  6. p=p -> next ;
  7. }
  8. return count;
  9. }
  1. 输出所有节点信息:遍历链表并输出每一个节点的学生信息。
  1. void printList(Node* head){
  2. cout << "学号\t姓名\t年龄" << endl;
  3. Node* p = head->next;
  4. while(p != nullptr){ // 遍历链表并输出每一个节点的学生信息
  5. cout << p->data.id << "\t" << p->data.name << "\t" << p->data.age << endl;
  6. p = p->next;
  7. }
  8. }

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=5112

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?