2

簡単な問題を作成しています。生徒を 1 つのリストに追加してから、それを 2 つのリストに分割しようとしています。リストにノードを追加する一般的な方法を作成しましたが、うまく機能していないようです。これは私が試したものです。私が間違っていることは何ですか?

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);
4

1 に答える 1

2

参照によって呼び出す必要があります (他に何も変更する必要はありません)。

void AddNodeToList(Node* &firstNode, Student *studToAdd)
于 2012-10-29T20:46:47.470 に答える