Die neuen bzw. abgeänderten Teile des folgenden Quelltextes erscheinen (hoffentlich) im Fettdruck.

Zur Erinnerung:
Es soll eine Klasse TsList zur Verwaltung einer einfach verketteten Liste erstellt werden.
Diese soll folgendes zur Verfügung stellen:
einen Konstruktor, einen Destruktor sowie die Kommunikationsschnittstellen empty, append und zur Abfrage der Datenelemente getItem, getFirstItem, getNextItem

Zusätzlich zu den Zeigern First und Last ist ein weiterer laufender Zeiger erforderlich, welcher von getFirstItem() und getNextItem() verwendet und verwaltet wird. Ich nenne diesen Zeiger Current.

Includes und Definition der Datenstruktur eines Listenelementes
#include <stdio>
#include <iostream>
#include <conio>

// Einfachstes Element zur Zusammenstellung einer einfach verketteten Liste
typedef struct SsListItem
{
 int Value;
 struct SsListItem *Succ;
} TsListItem;
Deklaration der Klasse TsList
class TsList
{
 public:
  TsList(){First = Last = Current = NULL;}
  ~TsList();
  int empty(){return First==NULL;}
  int append(int);
  TsListItem *getItem(unsigned int);
  TsListItem *getFirstItem();
  TsListItem *getNextItem();
 private:
  TsListItem *First, *Last, *Current;
};

TsList::~TsList()
{
 TsListItem *Temp;
 while (First)
 {
  Temp = First->Succ;
  delete First;
  First = Temp;
 }
}

int TsList::append(int Value)
{
 TsListItem *Temp = new TsListItem;  // Neues Element anlegen
 if (Temp)               // Steht Speicherplatz zur Verfügung?
 {
  Temp->Value = Value;   // Wert zuweisen
  Temp->Succ = NULL;     // Terminierung mit dem NULL-Zeiger
  if (!First) First = Last = Temp;
  else
  {
   Last->Succ = Temp;
   Last = Temp;
  }
  return 1;
 }
 else return 0;
}

TsListItem *TsList::getItem(unsigned int n)
{
 if (empty()) return NULL;
 TsListItem *Temp = First;
 unsigned int i = 0;
 while (Temp && (i++<n))
  Temp = Temp->Succ;
 return Temp;
}

TsListItem *TsList::getFirstItem()
{
 Current = First;
 return Current;
}

TsListItem *TsList::getNextItem()
{
 if (Current) Current = Current->Succ;
 return Current;
}
Die Hauptfunktion
int main()
{
 int Value, oK;
 TsList List;
 cout << "Eingegebene Ganzzahlen werden in einer einfach verketteten Liste verwaltet."
  << "\n\nGeben Sie Ganzzahlen ein und schliessen Sie diese mit einer 0 ab.\n";
 // Eingabe der Ganzzahlenfolge
 do
 {
  cin >> Value;
  if (Value) oK = List.append(Value);
 } while (Value && oK);
 cout <<< "\nAusgabe der eingegebenen Ganzzahlen:\n";
 // Ausgabe der Ganzzahlenfolge
 TsListItem *Current = List.getFirstItem();
 while (Current)
 {
  printf("%8i",Current->Value);
  Current = List.getNextItem();
 };

// kurzer Quelltext mit derselben Wirkung:
// for (TsListItem *Current = List.getFirstItem();Current;Current = List.getNextItem())
//  printf("%8i",Current->Value);

 getch();
 return 0;
}

Der Zugriff auf ein Listenelement per TsListItem* TsList::getFirstItem und TsListItem* TsList::getNextItem erfolgt jeweils ohne Suchen in einem einzigen Schritt.