This is what I have so far, and here is the assignment:
Change the data portion so that each node contains the same game character(single name) and a integer value which represents that characters hierarchy (1 is best / higher number not good)
Modify the addTo function to build list 10 nodes with unique char names and unique numbers that are in order from best to worst (1-100000)
Then create a new function which will search the list correctly and add a new node in the correct position in the hierarchy. if the hierarchy number is the name as another node, replace it.
and modify the printAll function to show everything in the output screen
This has been compiled with Visual Studio 2008
header code
...........
#include <iostream>
#include "intSLLst.h" //includes the header file into the program
usingnamespace std;
void main() //main to call the node creation,deletion, and print-all functions
{
IntSLList test;
test.addToHead(12); //added 12 nodes to the head
test.addToTail(12); //added 12 nodes to the head
//test.deleteFromHead();
//test.deleteFromTail(); // deletion of the head, tail and specific node
test.deleteNode(0);
test.isInList(12);
test.printAll(); // prints all the nodes
system("pause");
}
IntSLList::~IntSLList() {
for (IntSLLNode *p; !isEmpty(); ) {
p = head->next;
delete head;
head = p;
}
}
void IntSLList::addToHead(int el) {
head = new IntSLLNode(el,head); //adds a/or nodes to head
if (tail == 0)
tail = head;
}
void IntSLList::addToTail(int el) {
if (tail != 0) { // if list not empty;
tail->next = new IntSLLNode(el); //adds a/or nodes to tail
tail = tail->next;
}
else head = tail = new IntSLLNode(el);
}
int IntSLList::deleteFromHead() { //deletion of nodes from head
int el = head->info;
IntSLLNode *tmp = head;
if (head == tail) // if only one node on the list;
head = tail = 0;
else head = head->next;
delete tmp;
return el;
}
int IntSLList::deleteFromTail() { //deletion of nodes from tail
int el = tail->info;
if (head == tail) { // if only one node on the list;
delete head;
head = tail = 0;
}
else { // if more than one node in the list,
IntSLLNode *tmp; // find the predecessor of tail;
for (tmp = head; tmp->next != tail; tmp = tmp->next);
delete tail;
tail = tmp; // the predecessor of tail becomes tail;
tail->next = 0;
}
return el;
}
void IntSLList::deleteNode(int el) {
if (head != 0) // if non-empty list;
if (head == tail && el == head->info) { // if only one
delete head; // node on the list;
head = tail = 0;
}
elseif (el == head->info) { // if more than one node on the list
IntSLLNode *tmp = head;
head = head->next;
delete tmp; // and old head is deleted;
}
else { // if more than one node in the list
IntSLLNode *pred, *tmp;
for (pred = head, tmp = head->next; // and a non-head node
tmp != 0 && !(tmp->info == el);// is deleted;
pred = pred->next, tmp = tmp->next);
if (tmp != 0) {
pred->next = tmp->next;
if (tmp == tail)
tail = pred;
delete tmp;
}
}
}
bool IntSLList::isInList(int el) const {
IntSLLNode *tmp;
for (tmp = head; tmp != 0 && !(tmp->info == el); tmp = tmp->next);
return tmp != 0;
}
void IntSLList::printAll() const { //print all function to print nodes
for (IntSLLNode *tmp = head; tmp != 0; tmp = tmp->next)
cout << tmp->info << " ";
cout << endl;
}