Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

in the below code I'm getting output after Add first line: 100 110 120 130 140 150 160 After deleting second line: 110 120 140

in the below code I'm getting output after Add first line: 100 110 120 130 140 150 160 After deleting second line: 110 120 140 150 After adding third line: 110 1 120 140 150

I want output

Add first line: 100 110 120 130 140 150 160 After deleting second line: 110 120 140 150 After adding third line: 1 110 120 2 140 150 3

help me!!! please remember don't change this code if something only add that part

#include #include #include #include #include

using namespace std;

class ItemType { public: int key; ItemType(int k) : key(k) {} };

struct NodeType { ItemType item; NodeType *next; NodeType(ItemType i) : item(i), next(nullptr) {} };

class UnsortedList { public: UnsortedList() : head(nullptr), length(0) {}

void putItem(ItemType item); void putItem(ItemType item, int pos); void deleteItem(int key); ItemType& getItem(int pos); void printAll(); int getLength() { return length; }

private: NodeType *head; int length; };

void UnsortedList::putItem(ItemType item) { NodeType *newNode = new NodeType(item); newNode->next = head; head = newNode; length++; }

void UnsortedList::putItem(ItemType item, int pos) { if (pos == length) { putItem(item); return; }

NodeType *newNode = new NodeType(item); NodeType *current = head; for (int i = 0; i < pos - 1; i++) { current = current->next; } newNode->next = current->next; current->next = newNode; length++; }

void UnsortedList::deleteItem(int key) { NodeType *current = head; NodeType *prev = nullptr;

while (current != nullptr && current->item.key != key) { prev = current; current = current->next; }

if (current == nullptr) { return; }

if (prev == nullptr) { head = current->next; } else { prev->next = current->next; }

delete current; length--; }

ItemType& UnsortedList::getItem(int pos) { NodeType *current = head; for (int i = 0; i < pos; i++) { current = current->next; } return current->item; }

void UnsortedList::printAll() { NodeType *current = head; while (current != nullptr) { cout << current->item.key << " "; current = current->next; } cout << endl; }

vector getNumbersFromString(string line) { vector numbers; stringstream ss(line); int number; while (ss >> number) { numbers.push_back(number); if (ss.peek() == ',') { ss.ignore(); } } return numbers; }

int main() { UnsortedList list; ifstream dataFile("data.txt"); string line;

if (dataFile.is_open()) { // Add numbers from first line to list getline(dataFile, line); vector numbers = getNumbersFromString(line); for (int i = 0; i < numbers.size(); i++) { list.putItem(ItemType(numbers[numbers.size() - i - 1])); } cout << "Add first line: "; list.printAll();

// Delete numbers from second line getline(dataFile, line); numbers = getNumbersFromString(line); for (int i = 0; i < numbers.size(); i++) { list.deleteItem(numbers[i]); } cout << "After deleting second line: "; list.printAll();

// Add numbers from third line getline(dataFile, line); numbers = getNumbersFromString(line); for (int i = 0; i < numbers.size(); i++) { int pos = numbers[i] - 1; if (pos == -1) { pos = list.getLength(); } list.putItem(ItemType(numbers[i]), pos); }

cout << "After adding third line: "; list.printAll();

dataFile.close(); } else { cout << "Unable to open data file" << endl; }

return 0; }

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Expert Oracle Database Architecture

Authors: Thomas Kyte, Darl Kuhn

3rd Edition

1430262990, 9781430262992

More Books