public class TerrainVertexStack
{
public TerrainVertexLink head;
public int count;

    
public TerrainVertexStack()
    {
	count = 0;
	head = null;
    }

public void add(int tempX, int tempY)
    {
	if(head == null)
	    {
		head = new TerrainVertexLink(tempX, tempY);
		count++;
	    }
	else
	    {
		TerrainVertexLink index = head;
		while(index != null)
		    {
			if(index.X == tempX)
			    {
				index.Y = (index.Y+tempY)/2;
				return;
			    }
			else if(index.X > tempX)
			    {
				if(index == head)
				    {
					head.prev = new TerrainVertexLink(tempX, tempY);
					head.prev.next = head;
					head = head.prev;
				    }
				else
				    {
					index.prev.next = new TerrainVertexLink(tempX, tempY);
					index.prev.next.prev = index.prev;
					index.prev.next.next = index;
					index.prev = index.prev.next;
				    }
				count++;
				return;
			    }
			else if(index.next == null)
			    {
				index.next = new TerrainVertexLink(tempX, tempY);
				index.next.prev = index;
				count++;
				return;
			    }
			index = index.next;
		    }
	    }
    }
}

