This doesn&#x27;t seem like a very valuable interview question anymore because it&#x27;s well known and you can probably google the simple answer, but if not this is the basic idea (walk the list once pointing each next at the previous node and return the new head when you reach the end):<p><pre><code>  List *Reverse( List *pList )
  {
	List *pPrevious = nullptr;
	List *pCurrent = pList;
	while ( pCurrent )
	{
		List *pNext = pCurrent-&gt;GetNext();
		pCurrent-&gt;SetNext( pPrevious );
		pPrevious = pCurrent;
		pCurrent = pNext;
	}
	return pPrevious;
  }</code></pre>