Witajcie, mam pewien problem nie wiem jak zrobić abym mógł cofać osoby , czyli zrobić wskaźnik na poprzednią osobę. Moglibyście mi pomóc? O to mój kod :

// ConsoleApplication6.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include<iostream>
using namespace std;
#include<string>

struct Wizytowka // struktura reprezentujaca pojedyncza wizytowke
{
	string imie;
	string nazwisko;
	int tel;
	string kraj;
	Wizytowka *next, *cofamy; // wskaznik na next element na liscie

	Wizytowka() // konstruktor - wywolywany przy tworzeniu obiektu
	{
		// wczytujemy dane
		cout << " Imie: ";
		cin >> imie;
		cout <<endl <<  "Nazwisko: ";
		cin >> nazwisko;
		cout <<endl <<  "Tel:";
		cin >> tel;
		cout <<endl <<  " Kraj:";
		cin >> kraj;

		// wskazniki ustawiamy na NULL
		next = NULL;
		cofamy = NULL;
	}

	void wypisz()
	{
		cout<<endl;

		cout << "Imie: " << imie <<endl;
		cout<< "Nazwisko: " << nazwisko <<endl;
		cout<<"Numer telefonu: " << tel << endl;
		cout<<"Kraj: " << kraj<< endl;
		cout << "*************************"<<endl;

	}
};

void dodaj_baza(Wizytowka **kolejny)
{
	Wizytowka *nowa = new Wizytowka; // utworzenie nowej wizytowki
	 Wizytowka  *wsk_h = (*kolejny), *wsk_h1 = NULL; // wskazniki wsk_hnicze posluza do poruszania sie po liscie
	 
	while (wsk_h != NULL && (wsk_h->nazwisko).compare(nowa->nazwisko) == -1) // dopoki nie wyszlismy za liste i nazwisko na liscie jest przed nowym nazwiskiem poruszamy sie dalej
	{
		 wsk_h1 = wsk_h; // wsk_h1 zawsze wskazuje poprzednika wsk_h
		wsk_h = wsk_h->next;
	}

	if (wsk_h != NULL && (wsk_h->nazwisko).compare(nowa->nazwisko) == 0) // wizytowka z podanym nazwiskiem juz istanieje
	{
		cout << "Osoba " << nowa->nazwisko << " juz istanieje w bazie danych\n";
		delete nowa; // usuniecie obiektu
	}
	else if ((*kolejny) == NULL || (wsk_h == (*kolejny) && (wsk_h->nazwisko).compare(nowa->nazwisko) == 1)) // nowy element bedzie kolejnyiem listy
	{
		nowa->next = (*kolejny);
		(*kolejny) = nowa;
	}
	else // dodajemy wizytowke w srodku lub na koncu listy
	{
		wsk_h1->next = nowa;
		nowa->next = wsk_h;
	}
}

void szukaj_baza(Wizytowka *kolejny, string nazwisko)
{
	while(kolejny != NULL && (kolejny->nazwisko).compare(nazwisko) != 0) // dopoki nie znajdziemy wizytowki z podanym nazwiskiem lub nie przeszukamy calego wizytownika
		kolejny = kolejny->next;

	if (kolejny == NULL)
		cout << "Nie ma Osoby o takim nazwisku " << nazwisko << endl;
	else
		kolejny->wypisz();

}
void wypisz_baze(Wizytowka *kolejny)
{
	cout << "Baza Danych : "<<endl;
	cout<<endl;

	while(kolejny != NULL)
	{
		kolejny->wypisz(); // wypisanie wizytowki
		kolejny = kolejny->next; // przejscie na kolejny element
	}
}
void nastepny(Wizytowka *kolejny)
{

	if( kolejny == NULL){
		cout << " Koniec listy " <<endl;
	}else{

		kolejny = kolejny->next;
		kolejny->wypisz(); 

	}
}

bool usun_osobe(Wizytowka **kolejny, string a)
{
	if ((*kolejny) == NULL) // lista jest pusta
		return false;
	Wizytowka *wsk_h = (*kolejny), *wsk_h1 = NULL; // wskazniki wsk_hnicze posluza do poruszania sie po liscie

	while(wsk_h != NULL && (wsk_h->nazwisko).compare(a) != 0) // dopoki nie znajdziemy wizytowki z podanym nazwiskiem lub nie przeszukamy calego wizytownika
	{
		wsk_h1 = wsk_h;
		wsk_h = wsk_h->next;
	}

	if (wsk_h == NULL) // wyszlismy za liste - nie ma takiego nazwiska na liscie
		return false;
	else if (wsk_h == (*kolejny)) // usuwamy koniec
	{
		(*kolejny) = (*kolejny)->next;
		delete wsk_h;


	}
	else // usuwamy z srodka lub konca listy
	{
		wsk_h1->next = wsk_h->next;
		delete wsk_h;
	}
	return true;
}
int main()
{
	Wizytowka *kolejny = NULL;
	string nazwisko;
	char wybor='1';
	while (wybor != '0' )
	{
		system("cls");

		cout << "*************MENU ***********************"<<endl;
		cout << " 1.Dodaj Osobe do Bazy\n";
		cout << " 2.Usun Osobe\n";
		cout << " 3.Wyszukaj Osobe(Po nazwisku)\n";
		cout << " 4.Wyszukaj Osobe ( Po numerze telefonu)\n";
		cout << " 5.Wypisz \n";
		cout << " 6.Przegladaj\n";
		cout << " 7.Wyczyść\n";
		cout << " 0.Zakoncz\n";
		cin >> wybor;



		switch(wybor)
		{
		case '1' : 
			{
				dodaj_baza(&kolejny);
			}
			break;

		case '2':
			{
				cout << "Podaj nazwisko: ";
				cin >> nazwisko;
				if (!usun_osobe(&kolejny, nazwisko))
					cout << "Brak takiej osoby" << endl;
				else
					cout << "Osoba zostala usunieta" << endl;
			}
			break;	

		case '3': 
			{
				char dod_usuw='N';
				cout << "Podaj nazwisko: ";
				cin >> nazwisko;
				szukaj_baza(kolejny,nazwisko);
				while (dod_usuw == 'N')
				{
					cout << "-------------------INFORMACJE-------------------------"<<endl;
					cout << "Aby usunac wpisz D, aby przejsc do MENU -M" <<endl;


					cout << "Opcja: "; 
					cin >> dod_usuw;
					cout << "------------------------------------------------------"<<endl;
					switch (dod_usuw)
					{
					case 'D': 
						{
							usun_osobe(&kolejny, nazwisko);
							cout << endl;
							cout << "Osoba usunieta" << endl;
							break;
						}
					case 'N': 


					case 'M':
						system("PAUSE");
						break;

					}

				}

			}
			break;
		case '4' : 
			{
				break;
			}


		case '5' :
			{
				if(kolejny == NULL) {
					cout << " Brak osob w bazie"<<endl;
				}else{
					wypisz_baze(kolejny);
					system("PAUSE");
				}
			}
			break;
		case '6': 
			{
				system("cls");
				kolejny->wypisz();
				int z = 2; 

				while(z != 0 ){
					cout << " Aby wyjsc wcinij 0 " << endl;
					cout << "Aby przejsc do nastepnej osoby wpisz -1" <<endl;
					cout << "Aby przejsc do poprzedniej -2 "<<endl;

					cout << " Opcja: " ;
					cin >> z;
					if( z == 1) { 
						kolejny = kolejny -> next ;
						if( kolejny == NULL ){
							system("cls");
							cout << " Koniec listy" <<endl;
							z=0;
							
							system("PAUSE");
						} else
						{
							system("cls");
							kolejny -> wypisz();
						}

					
					}
					
				}

				break;
			}
		case '7' :
			{
				break;
				
			}
		case '0':
			{
				system("PAUSE");
			}
			break;

		}
	}
}

 

Z góry dziękuję , jest to bardzo pilne dla mnie :)