#include #include "ContactNode.h" int main() { ContactNode* contactList = new ContactNode(); ContactNode* currNode; std::string name, phoneNum; int i = 1; while (i <= 3) { std::cout << "Person " << i++ << std::endl; std::cout << "Enter name:" << std::endl; getline(std::cin, name); std::cout << "Enter phone number:" << std::endl; std::cin >> phoneNum; std::cin.ignore(); contactList->InsertAfter(new ContactNode(name, phoneNum)); std::cout << "You entered: " << name << ", " << phoneNum << std::endl << std::endl; } currNode = contactList; std::cout << "CONTACT LIST" << std::endl; while (contactList != nullptr) { currNode->PrintContactNode(); currNode = currNode->GetNext(); } delete contactList, currNode; } // ContactNode.h #ifndef CONTACTNODE_H #define CONTACTNODE_H #include class ContactNode { public: ContactNode(std::string contactName = "", std::string contactPhoneNum = "") { this->contactName = contactName; this->contactPhoneNum = contactPhoneNum; } ~ContactNode(); ContactNode& operator=(const ContactNode& objToCopy); void InsertAfter(ContactNode*); std::string GetName() const; std::string GetPhoneNumber() const; ContactNode *GetNext() const; void PrintContactNode(); private: std::string contactName; std::string contactPhoneNum; ContactNode* nextNodePtr = nullptr; }; #endif // ContactNode.cpp #include #include "ContactNode.h" void ContactNode::InsertAfter(ContactNode* newNode) { ContactNode *tmpNext = this->nextNodePtr; this->nextNodePtr = newNode; newNode->nextNodePtr = tmpNext; } ContactNode::~ContactNode() { ContactNode* curr = nextNodePtr; delete nextNodePtr; while (curr != nullptr) { curr = nextNodePtr; delete nextNodePtr; } } ContactNode& ContactNode::operator=(const ContactNode& objToCopy) { if (this != &objToCopy) { delete nextNodePtr; nextNodePtr = new ContactNode(); *nextNodePtr = *(objToCopy.nextNodePtr); } return *this; } std::string ContactNode::GetName() const { return contactName; } std::string ContactNode::GetPhoneNumber() const { return contactPhoneNum; } ContactNode* ContactNode::GetNext() const{ return this->nextNodePtr; } void ContactNode::PrintContactNode() { std::cout << "Name: " << contactName << "\nPhone Number: " << contactPhoneNum << std::endl; } // Can you fix my code
#include <iostream>
#include "ContactNode.h"
int main() {
ContactNode* contactList = new ContactNode();
ContactNode* currNode;
std::string name, phoneNum;
int i = 1;
while (i <= 3) {
std::cout << "Person " << i++ << std::endl;
std::cout << "Enter name:" << std::endl;
getline(std::cin, name);
std::cout << "Enter phone number:" << std::endl;
std::cin >> phoneNum;
std::cin.ignore();
contactList->InsertAfter(new ContactNode(name, phoneNum));
std::cout << "You entered: " << name << ", " << phoneNum << std::endl << std::endl;
}
currNode = contactList;
std::cout << "CONTACT LIST" << std::endl;
while (contactList != nullptr) {
currNode->PrintContactNode();
currNode = currNode->GetNext();
}
delete contactList, currNode;
}
// ContactNode.h
#ifndef CONTACTNODE_H
#define CONTACTNODE_H
#include <string>
class ContactNode {
public:
ContactNode(std::string contactName = "", std::string contactPhoneNum = "") {
this->contactName = contactName;
this->contactPhoneNum = contactPhoneNum;
}
~ContactNode();
ContactNode& operator=(const ContactNode& objToCopy);
void InsertAfter(ContactNode*);
std::string GetName() const;
std::string GetPhoneNumber() const;
ContactNode *GetNext() const;
void PrintContactNode();
private:
std::string contactName;
std::string contactPhoneNum;
ContactNode* nextNodePtr = nullptr;
};
#endif
// ContactNode.cpp
#include <iostream>
#include "ContactNode.h"
void ContactNode::InsertAfter(ContactNode* newNode) {
ContactNode *tmpNext = this->nextNodePtr;
this->nextNodePtr = newNode;
newNode->nextNodePtr = tmpNext;
}
ContactNode::~ContactNode() {
ContactNode* curr = nextNodePtr;
delete nextNodePtr;
while (curr != nullptr) {
curr = nextNodePtr;
delete nextNodePtr;
}
}
ContactNode& ContactNode::operator=(const ContactNode& objToCopy) {
if (this != &objToCopy) {
delete nextNodePtr;
nextNodePtr = new ContactNode();
*nextNodePtr = *(objToCopy.nextNodePtr);
}
return *this;
}
std::string ContactNode::GetName() const {
return contactName;
}
std::string ContactNode::GetPhoneNumber() const {
return contactPhoneNum;
}
ContactNode* ContactNode::GetNext() const{
return this->nextNodePtr;
}
void ContactNode::PrintContactNode() {
std::cout << "Name: " << contactName << "\nPhone Number: " << contactPhoneNum << std::endl;
}
// Can you fix my code
Step by step
Solved in 3 steps with 4 images