Я новичок. Недавно я получил задание. Они говорят, что это простой метод. Но я ничего не могу поделать. Вопрос состоит в том, чтобы создать односвязный список, используя эти <head line>
и <main>
, вы можете написать только часть функции.
#include <iostream>
#include <string>
using namespace std;
class phoneData {
public:
phoneData(string name, string phoneNumber, string address);
void printPD();
// private:
string name_;
string phoneNumber_;
string address_;
};
class phoneNode {
public:
phoneNode(phoneData * data, phoneNode * next);
phoneNode * next_;
phoneData * data_;
};
class phoneBook {
public:
phoneBook();
bool Insert(phoneData * data);
phoneData * Delete(string name);
phoneData * Find(string name);
private:
phoneNode * lst_;
};
и
int main() {
phoneBook * pb = new phoneBook();
phoneData * pd = new phoneData("lalala", "110-2345-6789", "kekeke");
pb->Insert(pd);
pd = new phoneData("dkdkdkk", "541-3076-5432", "sadsad");
pb->Insert(pd);
pd = pb->Find("lalala");
if (pd) pd->printPD();
pd = pb->Find("dkdkdkk");
if (pd) pd->printPD();
pb->Delete("lalala");
}
, поэтому я написал этот код.
phoneData::phoneData(string name, string phonenumber, string address) {
name_ = name;
phoneNumber_ = phonenumber;
address_ = address;
}
phoneBook::phoneBook() {
lst_ = 0;
}
bool phoneBook::Insert(phoneData *item){
if (lst_ == 0) {
lst_ = new phoneNode(item, 0);
//return;
}
if (item < lst_->data_) {
lst_ = new phoneNode(item, lst_);
// return;
}
phoneNode* ptr = lst_;
while (ptr->next_ != 0 && ptr->next_->data_ < item ){
ptr = ptr->next_;
}
ptr->next_ = new phoneNode(item, ptr->next_);
}
Это не работает, и я не могу перейти к следующей части. Я не знаю, почему они показывают функцию вставки типа bool. Это должно быть нарочно, но я не знаю.
phonedata* phonebook::delete(string key) {
if (lst_ == 0) //return;
phonenode* ptr = lst_;
if (lst_->data_->name_ == key) {
lst_ = lst_->next_;
delete ptr;
//return;
}
while (ptr->next_ != 0 && ptr->next_->data_->name_ != key) {
phonenode* ptr = ptr->next_;
}
if (ptr->next_ == 0) //return ;
phonenode* dptr = ptr->next_;
ptr->next_ = ptr->next_->next_;
delete dptr;
}