21xrx.com
2024-11-10 00:31:20 Sunday
登录
文章检索 我的文章 写文章
用C++尾插法,创建学生信息链表并实现增删改查
2023-07-05 09:46:12 深夜i     --     --
C++ 尾插法 学生信息链表 增删改查

在C++编程中,链表是非常重要的数据结构之一。链表是用来保存多个数据元素的线性数据结构,其中每个元素节点包含一个数据元素和指向下一个元素的指针。

尾插法是一种在链表中插入新节点的常用方式。在使用尾插法时,我们需要先创建一个空节点,然后将新元素添加到链表的尾部。这种方式非常适合用来创建一个包含多个学生信息的链表。

如果我们想要实现一个简单的学生信息管理系统,我们可以使用链表作为存储学生信息的数据结构。以下是一个C++实现的学生信息链表操作包括增删改查的示例代码。


#include<iostream>

using namespace std;

//定义学生信息结构体

struct student {

  string name;

  int age;

  int grade;

  student* next;

};

// 新建节点函数

student* newStudent(string name, int age, int grade) {

  student* stu = new student();

  stu->name = name;

  stu->age = age;

  stu->grade = grade;

  stu->next = NULL;

  return stu;

}

// 尾插法添加节点函数

void addStudent(student*& head, string name, int age, int grade) {

  student* stu = newStudent(name, age, grade);

  if (head == NULL)

    head = stu;

  else{

    student* p = head;

    while (p->next != NULL)

      p = p->next;

    

    p->next = stu;

  }

}

// 查询函数

void findStudent(student* head, string name) {

  student* p = head;

  int flag = 0;

  while (p != NULL) {

    if (p->name == name) {

      cout << "姓名: " << p->name << "\t年龄: " << p->age << "\t年级: " << p->grade << endl;

      flag = 1;

      break;

    }

    p = p->next;

  }

  if (flag == 0)

    cout << "该学生不存在" << endl;

  

}

// 修改函数

void modifyStudent(student* head, string name, int age, int grade) {

  student* p = head;

  int flag = 0;

  while (p != NULL) {

    if (p->name == name)

      p->age = age;

      p->grade = grade;

      flag = 1;

      break;

    

    p = p->next;

  }

  if (flag == 0)

    cout << "该学生不存在" << endl;

  

}

// 删除函数

void deleteStudent(student*& head, string name) {

  student* p = head;

  while (p != NULL) {

    if (p->name == name) {

      if (p == head)

        head = head->next;

      

      else {

        student* q = head;

        while (q->next != p)

          q = q->next;

        

        q->next = p->next;

      }

      delete p;

      cout << "删除成功" << endl;

      return;

    }

    p = p->next;

  }

  cout << "该学生不存在" << endl;

}

// 显示所有学生信息

void displayAllStudents(student* head) {

  if (head == NULL)

    cout << "没有学生信息" << endl;

    return;

  

  student* p = head;

  int count = 1;

  while (p != NULL) {

    cout << "第" << count << "个学生信息: " << endl;

    cout << "姓名: " << p->name << "\t年龄: " << p->age << "\t年级: " << p->grade << endl;

    p = p->next;

    count++;

  }

}

int main() {

  student* head = NULL;

  addStudent(head, "张三", 18, 1);

  addStudent(head, "李四", 19, 2);

  addStudent(head, "王五", 20, 3);

  displayAllStudents(head);

  findStudent(head, "张三");

  modifyStudent(head, "张三", 20, 2);

  findStudent(head, "张三");

  deleteStudent(head, "李四");

  displayAllStudents(head);

}

在这个简单的学生信息管理系统中,我们通过尾插法来往链表中添加新的学生信息。我们也实现了查询、修改和删除学生信息的功能。

总的来说,使用C++的尾插法可以很好地创建学生信息链表。我们可以通过该链表实现增加、删除、修改和查找学生信息等各种操作。如果您正在学习C++编程,我希望这篇文章对您有所帮助!

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复