假如用一个链表保存学生语数英三门成绩,怎么用代码找出三门中有不及格的学生数据然后保存到另一个链表中啊
遍历链表所有节点啊
#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)作为链表的头部,方便后续操作。
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
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
不知道你这个问题是否已经解决, 如果还没有解决的话://结构体初始化
struct student
{
char name[20];
int number;
int scored;
};