Zaimplementuj podstawowe operacje na listach dwukierunkowych:
void insert(int x, elem *&lista) { elem* obw = new elem; obw->dane = x; obw->poprz = NULL; if (lista) { lista->poprz = obw; obw->nast = lista; lista = obw; } else { lista = obw; lista->nast = NULL; //moz przyspiesz.. }
}
void insert(int x, int i, elem *&lista) { elem* obw = new elem; obw->dane = x; if (i != 0) { elem* pam = lista; while (i > 0) { pam = pam->nast; //wyjatek i--; } pam->poprz->nast = obw; obw->poprz = pam->poprz; obw->nast = pam; pam->poprz = obw; } else { if (lista) { obw->nast = lista; obw->poprz = NULL; lista->poprz = obw; lista = obw; } else { lista = obw; obw->nast = NULL; obw->poprz = NULL; } }
}
int remove(elem *&lista) { elem* d = lista; lista = lista->nast; lista->poprz = NULL; delete d; }
int remove(int i, elem *&lista) { elem* pam = lista; elem* d = lista; if (i != 0) { while (i != 0) { d = d->nast; //wyjatek i--; } d->nast->poprz = d->poprz; d->poprz->nast = d->nast; lista = pam; } else { lista = lista->nast; lista->poprz = NULL; } delete d; }
|