Home / Expert Answers / Computer Science / in-the-below-code-i-39-m-getting-output-after-add-first-line-100-110-120-130-140-150-160-after-delet-pa736

(Solved): in the below code I'm getting output after Add first line: 100 110 120 130 140 150 160 After deleti ...



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 <iostream>
#include <fstream>
#include <string>
#include <sstream>
#include <vector>

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<int> getNumbersFromString(string line) {
vector<int> 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<int> 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;
}



We have an Answer from Expert

View Expert Answer

Expert Answer


We have an Answer from Expert

Buy This Answer $5

Place Order

We Provide Services Across The Globe