-3
が機能していません。ここでリンクされたリストの並び替えは、私がリンクリストを作成しようとしていると、ソート同時にリンクされたリストは言ったが、私はかなり完全にリストをソートするためのコードを取得する方法を見つけ出すことはできません
は私のクラスです:
class PayRoll{
private:
string EmployeeName; // employee name
double PayRate; // employee pay rate
double HoursWorked; // employee hours worked
public:
void setRate(double); // set rate
void setName(string); // set name
void setHours(double); // set hours worked
string getName(){return EmployeeName;};
double getHours(){return HoursWorked;};
double getRate() {return PayRate;};
double getPaid(){return (PayRate*HoursWorked);};
};
class PayRollList{
private:
struct ListNode {
PayRoll p;
ListNode* next;
};
ListNode *head;
public:
PayRollList() { head = nullptr; };
void insert(string, double, double); // name, rate, hours
void printPayChecks(); // print name and total pay for all employees
};
ここでの主な問題は、挿入機能です。データの実装では、成功して起こっているので、私はここにそれを置くことを無視しました。私はこの部分を働かせることはできません。
void PayRollList::insert(string EmpName, double rate, double hours){
ListNode* newNode = new ListNode;
newNode->p.setName(EmpName);
newNode->p.setRate(rate);
newNode->p.setHours(hours);
newNode->next = nullptr;
ListNode* current = this->head;
ListNode* temp;
if (head == nullptr){
this->head = newNode; }
else {
current = this->head;
while (current->next != nullptr){
if (newNode->p.getRate() < current->p.getRate() && this->head == current){
temp = current;
this->head = newNode;
newNode->next = temp;
return;
}
else if (newNode->p.getRate() < current->p.getRate() && this->head != current){
temp = current;
current = current->next;
newNode->next = current;
temp->next = newNode;
return;
}
else if (newNode->p.getRate() < current->p.getRate()){
temp = current;
current = current->next;
newNode->next = current;
temp->next = newNode;
return;
}
else current = current->next;
}
current->next = newNode;
}
}
任意の助けいただければ幸いです!
!この文脈でダブルポインタがどのように機能するのか説明することはできますか? –
https://ibb.co/e5ZNZQ 電流へのポインタのポインタであるので、ListNodeクラスの各インスタンス*内の「次の」ポインタ*を指します。 – jdizzle