#pragma once

namespace JTL // Jack's template library
{
	template <typename T>
	ListNodePosi(T) List<T>::search(T const& e, int n, ListNodePosi(T) p) const
	{
		if (_size == 0)
			return NULL;
		//assert(valid(p));
		assert(0 <= n && n <= _size);

		while (n-- && p != header->succ) {
			if ((p = p->pred)->data <= e) {
				break;
			}
		}
		return p;
	}

};