ZBLOG

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

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

  1. 创建链表:定义一个头节点并返回其指针。
Node* createList(){
    Node* head = new Node(); // 头节点不存放数据,只是起到连接作用
    head->next = nullptr; // 初始化为空链表
    return head;
}
  1. 插入新节点:在链表末尾插入新节点。
void insertNode(Node* head, Student s){
    Node* newNode = new Node(); // 新建节点

    newNode->data = s; // 将学生信息存储在新节点中

    Node* p = head;
    while(p->next != nullptr){ // 找到最后一个节点
        p = p->next;
    }
    
    p->next = newNode; // 将新节点插入到末尾
}
  1. 删除指定id的节点:遍历链表查找指定id的学生信息所在位置,并删除该节点。
bool deleteNode(Node* head, int id){
    Node* p1 = head; 
    Node* p2 = head->next;

   while(p2 != nullptr && p2->data.id != id){ // 查找指定id的学生信息所在位置
        p1 = p2;
        p2 = p2->next;
   }

   if(p2 == nullptr){
       return false; // 未找到
   }
    
   p1 -> next=p2 -> next ; // 删除节点
   delete  p2 ;
   return true; 
}
  1. 查找指定id的节点:遍历链表查找指定id的学生信息所在位置,并返回其节点指针。
Node* findNode(Node* head, int id){
    Node *p=head -> next ;  
    while (p != NULL &&p ->data.id!=id) { // 遍历链表查找
        p= 	p -> next ;  
    }   
    if (p == NULL ) {
        return NULL ; 
    }else{
        return 	p ; 
    }
}
  1. 统计节点个数:遍历链表并统计节点个数。
int countNodes(Node* head){
    int count=0;  
    Node *p=head -> next ;  
    while (p !=NULL ){
        count++;
        p=p -> next ; 
     }
     return count; 	
}
  1. 输出所有节点信息:遍历链表并输出每一个节点的学生信息。
void printList(Node* head){
	cout << "学号\t姓名\t年龄" << endl;
    Node* p = head->next;
    while(p != nullptr){ // 遍历链表并输出每一个节点的学生信息
        cout << p->data.id << "\t" << p->data.name << "\t" << p->data.age << endl;
        p = p->next;
    }
}

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

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

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

联系我们

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

微信号:3007537140

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

关注我们
x

注册

已经有帐号?