21xrx.com
2024-12-22 20:59:18 Sunday
登录
文章检索 我的文章 写文章
用链表实现学生管理系统-C++
2023-07-09 13:05:24 深夜i     --     --
链表 学生管理系统 C++ 添加学生 删除学生

链表是一种比较常用的数据结构,通过使用链表来管理学生信息是一种非常高效的方式。C++是一门非常强大的语言,可以轻松实现链表结构。本文将介绍如何使用链表来实现学生管理系统。

首先,我们需要定义一个学生类,包含姓名、性别、年龄和学号等信息。以下是一个简单的学生类的定义:


class Student {

public:

  string name;  // 姓名

  string gender;  // 性别

  int age;  // 年龄

  int id;  // 学号

  Student(string n, string g, int a, int i)

    name = n;

    gender = g;

    age = a;

    id = i;

  

};

接下来,我们需要定义一个链表类。链表由一个个节点组成,每个节点保存一个学生信息和指向下一个节点的指针。以下是一个简单的链表类的定义:


class LinkedList {

private:

  struct Node {

    Student data;  // 学生信息

    Node* next;  // 指向下一个节点的指针

    Node(Student s)

      data = s;

      next = nullptr;

    

  };

  Node* head;  // 头节点

public:

  LinkedList()

    head = nullptr;

  

  ~LinkedList() {

    Node* temp = head;

    while (temp != nullptr) {

      Node* next = temp->next;

      delete temp;

      temp = next;

    }

  }

  void add(Student s) {

    Node* node = new Node(s);

    if (head == nullptr)

      head = node;

     else {

      Node* temp = head;

      while (temp->next != nullptr)

        temp = temp->next;

      

      temp->next = node;

    }

  }

  void remove(int id) {

    Node* temp = head;

    Node* prev = nullptr;

    while (temp != nullptr) {

      if (temp->data.id == id) {

        if (prev == nullptr)

          head = temp->next;

         else

          prev->next = temp->next;

        

        delete temp;

        return;

      }

      prev = temp;

      temp = temp->next;

    }

  }

  void printAll() {

    Node* temp = head;

    while (temp != nullptr) 性别:" << temp->data.gender <<

      "

  }

  Student* getById(int id) {

    Node* temp = head;

    while (temp != nullptr) {

      if (temp->data.id == id) {

        return &(temp->data);

      }

      temp = temp->next;

    }

    return nullptr;

  }

};

上述链表类实现了添加、删除、查询和打印所有学生信息的功能。其中,头节点是链表的起点,每个节点保存一个学生信息和指向下一个节点的指针。add()方法在链表尾部添加一个新节点,remove()方法根据学号删除一个节点,printAll()方法打印所有节点的学生信息,getById()方法根据学号查找节点并返回该节点的学生信息。

使用链表实现学生管理系统可以提高效率并简化代码。添加、删除和查询都可以在O(n)的时间内完成,其中n为节点数。链表类中的操作也可以根据实际需求进行自定义实现,实现灵活多样的功能。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复
    相似文章