-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