// uses the list to create a doubly linked list - as input as data, packages into node and then pass
var LinkedList:=class List
(
	var init:=method[]
	(
		super.init[];
	);
	
	var equalTo:=method x 
	{
		try
		(
			if (x.getsize[]!=getsize[]) return false;
			var i;
			for i from 0 to getsize[] - 1
			(
				if (x.lget[i] != lget[i] || (!(x.lget[i] =lget[i]))) return false;
			);
		) catch "" (
			return false;
		);
		return true;
	};
	
	var laddtotail:=method[toadd]
	{
		var tempnode:=new node[];
		tempnode.setdata[toadd];
		att addtotail[tempnode];
	};
	
	var laddtohead:=method[toadd]
	{
		var tempnode:=new node[];
		tempnode.setdata[toadd];		
		att addtohead[tempnode];
	};
	
	var lgethead:=method[] 
	{
		var temphead:=att gethead[];
		if (temphead==null)
		(
			return null;
		) else (
			return temphead.getdata[];
		);
	};
	
	var lgettail:=method[] 
	{
		var temptail:=att gettail[];
		if (temptail==null)
		(
			return null;
		) else (
			return temptail.getdata[];
		);
	};

	var lput:=method[index,data]
	{
		var tempynode:=new node[];
		tempynode.setdata[data];
		att put[index,tempynode];
	};
	
	var lset:=method[index,data]
	{
		var etemp:=get[index];
		etemp.setdata[data];
	};
	
	var lremovehead:=method[] att removehead[];
	
	var lremove:=method[idex] remove[idex];
	
	var lgetiterator:=method[] return getiterator[];
	
	var lget:=method[toget]
	{	
		var tempy:=att get[toget];
		if (tempy==null)
		( 
			return null;
		) else (
			return tempy.getdata[];
		);
	};

);