Question: I need help implementing this C++ header file for an ordered link list. I cannot get my insert method to work. It is really confusing

I need help implementing this C++ header file for an ordered link list. I cannot get my insert method to work. It is really confusing because I am required to return an integer. If you could please help me that would be great.

#ifndef ORDEREDLINKEDLIST_H

#define ORDEREDLINKEDLIST_H

#include

template

struct Node

{

Type info;

Node *next;

};

template

class OrderedLinkedList

{

public:

OrderedLinkedList();

OrderedLinkedList(const OrderedLinkedList& other);

~OrderedLinkedList();

OrderedLinkedList& operator=(const OrderedLinkedList& other);

void copyList(Node* dest, Node* src);

void deleteList(Node* src);

int insert(const Type&);

Type* find(int) const;

Type* get(int) const;

int remove(int);

void clear();

int size() const;

void print() const;

private:

Node* head;

Node* tail;

unsigned int count;

};

template

OrderedLinkedList::OrderedLinkedList()

{

head = nullptr;

tail = nullptr;

count = 0;

}

template

OrderedLinkedList::OrderedLinkedList(const OrderedLinkedList& other)

{

Node* cur = other.head;

head = nullptr;

tail = nullptr;

copyList(other.head, other.tail);

}

template

void OrderedLinkedList::deleteList(Node* src) {

Node* cur = src;

Node* tmp;

while (cur) {

tmp = cur->next;

delete cur;

cur = tmp;

}

}

template

OrderedLinkedList::~OrderedLinkedList()

{

this->deleteList(head);

}

template

OrderedLinkedList& OrderedLinkedList::operator=(const OrderedLinkedList& other)

{

if (this != &other) {

Node* old = head;

head = nullptr;

tail = nullptr;

copyList(other.head, other.tail);

deleteList(old);

}

return *this;

}

template

void OrderedLinkedList::copyList(Node* dest, Node*src) {

Node* cur = src;

head = nullptr;

Node* newNode = nullptr;

Node* next = nullptr;

while (cur) {

insert(cur->info);

cur = cur->next;

}

}

template

int OrderedLinkedList::insert(const Type& item)

{

Node *cur;

Node *trailcur;

Node *newNode;

bool found;

newNode = new Node;

newNode->info = item;

newNode->next = nullptr;

if (head == nullptr)

{

head = newNode;

tail = newNode;

count++;

return count;

}

else

{

cur = head;

found = false;

while (cur != nullptr && !found) {

if (cur->info >= item)

found = true;

else {

trailcur = cur;

cur = cur->next;

}

}

if (cur == head) {

newNode->next = head;

head = newNode;

count++;

return count;

}

else {

trailcur->next = newNode;

newNode->next = cur;

if (cur == nullptr)

tail = newNode;

count++;

return count;

}

}

}

template

Type* OrderedLinkedList::get(int dest) const

{

return nullptr;

}

template

Type* OrderedLinkedList::find(int dest) const

{

return nullptr;

}

template

int OrderedLinkedList::remove(int key)

{

return 0;

}

template

void OrderedLinkedList::clear()

{

}

template

int OrderedLinkedList::size() const

{

return -1;

}

template

void OrderedLinkedList::print() const

{

}

#endif

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!