All pastes #85495 Raw Edit

Something

public text v1 · immutable
·published 2006-07-12 00:01 UTC
rendered paste body
//simple linked list
#ifndef LIST_H
#define LIST_H
#include "node.h"
class List
{
private:
	Node *front;
	Node* pos;
	Node * FindNode(Node*, Node*);
public:
	List();
	List(List&); // copy constructor
	~List(); // desctructor
	bool IsFull();
	bool IsEmpty();
	void GetNext(Node &);
	void AddAtFront(Node &);
	void AddAtRear(Node &);
	void InsertBefore(Node &);  // before node pointed to by pos
	void InsertInOrder(Node &); // order determined by Node::CompareTo
	void DeleteItem();
	void FindItem(Node &, bool &);
	void Reset();
	bool EndOfList();
	List& operator=(List&); // overloaded assignment operator

	void Print();
};


#endif

#include "list.h"
#include "node.h"
#include <iostream>
#include <new>
#include <stdexcept>
using namespace std;

List::List()
{
	pos=0;
	front=0;
}

List::~List()
{
	cout <<"destructor called " << endl;

	Node * temp;
	while(front != 0)
	{
		temp=front->next;
		cout << front->data << " ";
		delete front;
		front= temp;
	}
	cout << endl;
}
List& List::operator=(List & L)
{
	if(this==&L)
		return *this;
	Node n;
	front=0;
	pos=0;
	Node * temp=0;
	Node * start;
	start = L.front;
	while(start != temp)
	{
		temp=FindNode(start,temp);
		if(temp==0)
		{
			break;
		}
		AddAtFront(*temp);
	}

	return *this;
}
Node * List::FindNode(Node* start, Node * end)
{
	Node * temp=start;
	Node * test;
	while(temp !=end)
	{
		test=temp->next;
		if(test ==end)
		{
			return temp;
		}
		else
		{
			temp=test;
		}
	}
	
	return end;
}

List::List(List & L)
{
// cout <<" callign copy constructor " << endl;
	Node n;
	front=0;
	pos=0;
	Node * temp=0;
	Node * start;
	start = L.front;
	while(start != temp)
	{
		temp=FindNode(start,temp);
		if(temp==0)
		{
			return;
		}
		AddAtFront(*temp);
	}

}
bool List::IsFull()
{
	/*
	try
	{
		Node * temp = new Node();
		delete temp;
		return false;
	}
	catch (bad_alloc e)
	{
		return true;
	}
	*/