8.19 LAB: Grocery shopping list (linked list: inserting at the end of a list)
PLEASE ANSWER IN C++
Given main(), define an InsertAtEnd() member function in the ItemNode class that adds an element to the end of a linked list. DO NOT print the dummy head node.
Ex. if the input is:
4 Kale Lettuce Carrots Peanuts
where 4 is the number of items to be inserted; Kale, Lettuce, Carrots, Peanuts are the names of the items to be added at the end of the list.
The output is:
Kale Lettuce Carrots Peanuts
THE FOLLOWING CODE IS GIVEN: "main.pp" & "ItemNode.h"
*Note the main.cpp file cannot be modified*
----------main.cpp----------
#include "ItemNode.h"
int main() {
ItemNode *headNode; // Create intNode objects
ItemNode *currNode;
ItemNode *lastNode;
string item;
int i;
int input;
// Front of nodes list
headNode = new ItemNode();
lastNode = headNode;
cin >> input;
for (i = 0; i < input; i++) {
cin >> item;
currNode = new
ItemNode(item);
lastNode->InsertAtEnd(headNode,
currNode);
lastNode = currNode;
}
// Print linked list
currNode = headNode->GetNext();
while (currNode != NULL) {
currNode->PrintNodeData();
currNode =
currNode->GetNext();
}
}
----------ItemNode.h----------
#include <iostream>
#include <string>
using namespace std;
class ItemNode {
private:
string item;
ItemNode* nextNodeRef;
public:
// Constructor
ItemNode() {
item = "";
nextNodeRef = NULL;
}
// Constructor
ItemNode(string itemInit) {
this->item = itemInit;
this->nextNodeRef = NULL;
}
// Constructor
ItemNode(string itemInit, ItemNode nextLoc) {
this->item = itemInit;
this->nextNodeRef =
&nextLoc;
}
// Insert node after this node.
void InsertAfter(ItemNode nodeLoc) {
ItemNode* tmpNext;
tmpNext =
this->nextNodeRef;
this->nextNodeRef =
&nodeLoc;
nodeLoc.nextNodeRef =
tmpNext;
}
// TODO: Define insertAtEnd() function that inserts a
node
// to the end of the linked list
// Get location pointed by nextNodeRef
ItemNode* GetNext() {
return this->nextNodeRef;
}
void PrintNodeData() {
cout << this->item
<< endl;
}
};
Please answer this in C++!
/* main.cpp */
#include "ItemNode.h"
int main() {
ItemNode *headNode; // Create intNode objects
ItemNode *currNode;
ItemNode *lastNode;
string item;
int i;
int input;
// Front of nodes list
headNode = new ItemNode();
lastNode = headNode;
cin >> input;
for (i = 0; i < input; i++) {
cin >> item;
currNode = new ItemNode(item);
lastNode->InsertAtEnd(headNode, currNode);
lastNode = currNode;
}
// Print linked list
currNode = headNode->GetNext();
while (currNode != NULL) {
currNode->PrintNodeData();
currNode = currNode->GetNext();
}
}
/*ItemNode.h */
#include <iostream>
#include <string>
using namespace std;
class ItemNode {
private:
string item;
ItemNode* nextNodeRef;
public:
// Constructor
ItemNode() {
item = "";
nextNodeRef = NULL;
}
// Constructor
ItemNode(string itemInit) {
this->item = itemInit;
this->nextNodeRef = NULL;
}
// Constructor
ItemNode(string itemInit, ItemNode nextLoc) {
this->item = itemInit;
this->nextNodeRef = &nextLoc;
}
// Insert node after this node.
void InsertAfter(ItemNode nodeLoc) {
ItemNode* tmpNext;
tmpNext = this->nextNodeRef;
this->nextNodeRef = &nodeLoc;
nodeLoc.nextNodeRef = tmpNext;
}
void InsertAtEnd(ItemNode *headNode,ItemNode
*currNode){
if(headNode == NULL){ // check if it is the first
Node
headNode = currNode; // add curr to head
}else{ // find last node
while(headNode->nextNodeRef!=NULL){
headNode = headNode->nextNodeRef;
}// add currnode
to last node
headNode->nextNodeRef = currNode;
}
}
// Get location pointed by nextNodeRef
ItemNode* GetNext() {
return this->nextNodeRef;
}
void PrintNodeData() {
cout << this->item << endl;
}
};
/* OUTPUT */
/* PLEASE UPVOTE */
Get Answers For Free
Most questions answered within 1 hours.