C++ 将项目添加到问题列表中

C++ 将项目添加到问题列表中,c++,C++,我正在创造一个简单的问题。我尝试将学生添加到一个列表中,然后将其拆分为两个列表。我创建了一个将节点添加到列表中的通用方法,但它似乎无法正常工作。这就是我试过的。我做错了什么 int main() { for(int i=0;i<NR_STUDENTS;i++) { Student *studToAdd=new Student; cout<<"Student #"<<i<<endl; cout<<

我正在创造一个简单的问题。我尝试将学生添加到一个列表中,然后将其拆分为两个列表。我创建了一个将节点添加到列表中的通用方法,但它似乎无法正常工作。这就是我试过的。我做错了什么

int main()
{
   for(int i=0;i<NR_STUDENTS;i++)
   {
      Student *studToAdd=new Student; 
      cout<<"Student #"<<i<<endl;
      cout<<"Name:";
      cin>>studToAdd->name;
      cout<<"Grade:";
      cin>>studToAdd->grade;
      Add(studToAdd); 
  }
  Split();
  Print();
 }

#include "students.h"

Node *allFirstNode;
Node *admitedFirstNode;
Node * rejectedFirstNode;


void AddNodeToList(Node *firstNode, Student *studToAdd)
{
    Node *nodeToAdd=new Node;
    nodeToAdd->student=studToAdd;
    nodeToAdd->next=NULL;

    if(firstNode==NULL)
    {
        firstNode=nodeToAdd;
    }
    else
    {
        Node *temp;
        temp=firstNode;
        while(temp->next != NULL)
        {
            temp=temp->next;
        }
        temp->next=nodeToAdd;
    }
}
void addStudent(Student *studentToAdd)
{
    AddNodeToList(allFirstNode,studentToAdd);
}

void split()
{
    Node *temp=allFirstNode;
    while(temp->next != NULL)
    {
        Student *currentStud=temp->student;
        if(currentStud->grade < GR)
        {
            AddNodeToList(rejectedFirstNode,currentStud);
        }
        else    
        {
            AddNodeToList(admitedFirstNode,currentStud);
        }
    }
}


void PrintList(Node *first)
{
    Node *temp=first;
    while(temp!=0)
    {
        cout<<temp->student->name<<":"<<temp->student->grade<<endl;
        temp=temp->next;
    }
}
void Print()
{
   PrintList(admitedFirstNode);
   PrintList(rejectedFirstNode);
}
    #include <iostream>
#include <string>

using namespace std;

const int NR_STUDENTS=2;
const double GR=5.0;

struct Student
{
    string name;
    double grade;
};

struct Node
{
    Student *student;
    Node *next;
};

extern Node *allFirstNode;
extern Node *admitedFirstNode;
extern Node * rejectedFirstNode;

void addStudent(Student *studentToAdd);
void split();
void sort();
void print(Node *firsNode);
intmain()
{
对于(int i=0;inxt=nodeToAdd;
}
}
无效添加学生(学生*学生添加)
{
AddNodeToList(allFirstNode,studentToAdd);
}
无效拆分()
{
Node*temp=allFirstNode;
while(临时->下一步!=NULL)
{
学生*currentStud=temp->Student;
如果(当前螺柱->等级coutname您需要通过引用调用(不需要更改任何其他内容):


显示问题的最小完整代码片段是什么?您希望发生什么,以及实际发生什么?我想在列表(allFirstNode)中添加学生。当我添加节点时,它将成为nodeToAdd,但当我尝试添加另一个节点时,列表为空,先前添加的节点将消失
void AddNodeToList(Node* &firstNode, Student *studToAdd)