数据结构学生成绩管理系统抽取不及格学生信息

假如用一个链表保存学生语数英三门成绩,怎么用代码找出三门中有不及格的学生数据然后保存到另一个链表中啊

遍历链表所有节点啊

#include <iostream>
using namespace std;
typedef struct _node
{
    int data;
    struct _node *next;
}node;

int main()
{
    node * head = new node;
    node * newHead = new node;
    head->next = newHead->next = NULL;
    for(int i=0;i<3;i++)
    {
        node *p = new node;
        cin>>p->data;
        p->next = head->next;
        head->next = p;
    }
    node *q = head;
    node *p = head->next;
    while(p != NULL)
    {
        if(p->data < 60)
        {
            q->next = p->next;
            p->next = newHead->next;
            newHead->next = p;
            p = q->next;
        }
        else
        {
            q = p;
            p = p->next;
        }
    }
    p = newHead->next;
    while(p!=NULL)
    {
        cout<<p->data<<endl;
        p=p->next;
    }
    return 0;
}

回答不易 求求您采纳哦

可以按照以下步骤实现,代码仅供参考:

  • 定义一个链表节点的结构体,用于保存学生的信息,包括语数英三门成绩。
class ListNode:
    def __init__(self, name, score_chinese, score_math, score_english):
        self.name = name
        self.score_chinese = score_chinese
        self.score_math = score_math
        self.score_english = score_english
        self.next = None


  • 创建两个链表,一个用于保存所有学生数据,另一个用于保存不及格的学生数据。
all_students = ListNode("dummy", -1, -1, -1)
fail_students = ListNode("dummy", -1, -1, -1)

其中,使用了一个哨兵节点(dummy)作为链表的头部,方便后续操作。

  • 往all_students链表中插入学生数据。假设数据已经存在于一个二维列表中,每个子列表的第一个元素是学生姓名,第二个元素是语文成绩,第三个元素是数学成绩,第四个元素是英语成绩。
data = [["张三", 80, 75, 70], ["李四", 90, 55, 65], ["王五", 50, 60, 70]]

for row in data:
    name = row[0]
    score_chinese = row[1]
    score_math = row[2]
    score_english = row[3]

    node = ListNode(name, score_chinese, score_math, score_english)
    node.next = all_students.next
    all_students.next = node


  • 遍历all_students链表,将不及格的学生数据插入到fail_students链表中。
p = all_students.next
while p is not None:
    if p.score_chinese < 60 or p.score_math < 60 or p.score_english < 60:
        node = ListNode(p.name, p.score_chinese, p.score_math, p.score_english)
        node.next = fail_students.next
        fail_students.next = node

    p = p.next

最后,遍历fail_students链表,输出所有不及格学生的信息。

p = fail_students.next
while p is not None:
    print(p.name, p.score_chinese, p.score_math, p.score_english)
    p = p.next

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^