Code:
#include <iostream>
#include <vector>
//#include <list>
using namespace std;
struct Node
{
int data;
Node *next;
Node(int d, Node *n) : data(d), next(n)
{}
};
class List
{
public:
List()
{
head = new Node(int(), NULL);
//cout << "int() is: " << int() << endl;
}
void Add(int dataX, Node &n1)
{
Node *it = head;
/*if(it->next != NULL)
{
head = new Node(dataX, it->next);
head->data = dataX;
//cout << "head->data is: " << head->data << endl;
head->next = NULL;
tail = new Node(dataX, it->next);
tail->data = dataX;
//cout << "tail->data is: " << tail->data << endl;
tail->next = NULL;
return;
}*/
if(it->next == 0)
{
// can't find 7 or 8 due to a problem in here.
n1.data = it->data;
//n1.next = it->next;
cout << "yes, this is definately working" << endl;
cout << n1.data << endl;
}
while(it->next != 0)// && it->next->data < dataX)
{
int ggg = 0;
//cout << ++ggg << "this number" << endl;
n1.data = it->data;
n1.next = it->next;
// cout << n1 << " and " << n1.data << endl;
it = it->next;
//cout << "hello world" << endl;
cout << it->data << endl;
//it->next = new Node(dataX, it->next);
}
//cout << "it->data is: " << it->data << endl;
//if(it->next == NULL)
//n1->data = dataX;
//n1 = it->next;
it->next = new Node(dataX, it->next);
//head = it;
}
bool Count(int y)
{
//cout << vTail[-1] << endl;
return 1;
}
void RemoveAll(int z)
{
Node *it = head;
//cout << "head->next is right now: " << head->data << endl;
//cout << "it->next is right now: " << it->data << endl;
//while(it->next == NULL) // && it->next->data < z)
//{
//cout << "hola" << endl;
it = it->next;
// cout << "hola " << it->next << endl;
//}
//if(head->next != 0)
//{
//Node *it = head->next;
// Node *hold = it->next;
// it->next = hold->next;
// delete hold;
// while(it != 0)
// {
//cout << "now it's: " << it->data << "->" << endl;
// it = it->next;
// }
//}
if(it->next != NULL)
{
cout << "yes this works" << endl;
Node *hold = it->next;
it->next = hold->next;
//cout << "hold->next is: don't expect to print->: " << hold->next << endl;
delete hold;
//cout << "hold->next is now: " << hold->data << endl;
//cout << "while remove, it->data is: " << it->data << endl;
}
//cout << "after remove, it->data is: " << it->data << endl;
}
int Contains(int b)
{
return 1;
}
void display()
{
//cout << "head->next in walk is: " << head->data << endl;
if(head->next != 0)
{
Node *it = head->next;
while(it != 0)
{
cout << it->data << "->";
it = it->next;
//cout << it->data << "->";
}
}
}
private:
Node *head;
Node *tail;
//List *pNext;
vector<int> vHead;
vector<int> vTail;
};
Node *find_entry(Node *lptr, int match)
{
while(lptr != 0)
if(lptr->data == match)
{
cout << "match is: " << match << endl;
return(lptr);
}
else
//cout << "lptr->data is: " << lptr->data << endl;
lptr = lptr->next;
return (0);
}
int main()
{
List list;
Node *find_entry(Node *lptr, int match);
//Node n1, n2, n3;
Node *lptr, *list_start;
//Node n1(NULL, NULL) = &list_start;
int i, search;
//cout << list.Count(9) << endl; //this should print 0
list.Add(7, *list_start);
list.Add(8, *list_start);
list.Add(9, *list_start);
list.Add(10, *list_start);
list.Add(11, *list_start);
cout << "list start is: " << list_start->data << endl;
list.display();
cout << "Enter a value to locate: ";
cin >> search;
lptr = find_entry(list_start, search);
//cout << "this is important: " << lptr->data << endl;
if(lptr != 0)
cout << "found " << lptr->data << "." << endl;
else
cout << "Not found" << endl;
list.RemoveAll(7);
list.RemoveAll(10);
list.RemoveAll(9);
list.display();
//list.Add(7)->head;
//lptr = list.FindEntry(list_start, match);
/*if(lptr != 0)
cout << "Found: " << lptr->data << endl;
else
cout << "Not found!" << endl;*/
//cout << list.Add() << endl;
/*if(list.Contains(12))
cout << "Found 12" << endl; //this should print
else
cout << "Error" << endl;
if(!list.Contains(15))
cout << "Did not find 15" << endl; //this should print
else
cout << "Error" << endl;*/
//for(int dataX = 0; dataX < 10; dataX++)
// list.Add(dataX);
//cout << list.Count(7) << endl; //should print 2, since there are 2 7's in the list
list.RemoveAll(0);
//cout << list.Count(7) << endl; //should print 0
cout << endl;
return 0;
}
in my link list, I'm inserting the integers 7, 8, 9, 10, and 11.
I have a search function: "find_entry" under class list.
This function can find the 9, 10, and 11 that I inserted into my list, but it can't find 7 or 8.
The problem lies within class List, member function Add, somewhere inside the first if statement.
I don't know why n1.data isn't getting assigned to it->data correctly.
Could someone please point me in the right direction?
Thanks