PDA

Visualizza la versione completa : [C++] Deallocazione n-esimo elemento di una lista semplice.


Unspeakable
09-12-2007, 13:40
W gente. Vi espongo brevemente il problema. :D Devo costruire una lista da tastiera (ok, fatto), renderla circolare (ok, fatto) e deallocare un elemento. Ho provato, modificando i vari puntatori .. e provato a stampare la nuova lista, ma alch il programma sbrocca. :unz: Inizia a scrivere infinite volte un numero a caso ..



#include <cstdlib>
#include <iostream>

using namespace std;

struct elem {
int info;
elem* next;};

void circo (elem* l);

void deall (int n, elem* l);

int main(int argc, char *argv[]) {
int x,n;
char r,s,v;

elem* l=0;
elem* aux;
elem* aux1;


aux=new elem;
cout << "Inserisci il valore info dell'elemento: ";
cin >> x;
aux->info=x;
aux->next=0;
l=aux;

cout << "Desideri continuare? (Y/N) ";
cin >> r;
while (r=='Y') {
aux=new elem;
cout << "Inserisci il valore info dell'elemento: ";
cin >> x;
aux->info=x;
aux->next=l;
l=aux;
cout << "Desideri continuare? (Y/N) ";
cin >> r;}

cout << "Desideri rendere circolare la lista? (Y/N) ";
cin >> s;
if (s=='Y') circo(l);


aux1=l;
while (aux1->next != l) aux1=aux1->next;
aux1=aux1->next;
cout << "E' circolare, difatti il primo elemento della lista e': " << aux1->info <<".\n";

cout << "Desideri deallocare la lista? (Y/N) ";
cin >> v;
if (v=='Y') deall (n, l);

aux=l;
cout << "La nuova lista e' la seguente: ";
while (aux->next != l) cout << aux->info;










system("PAUSE");
return EXIT_SUCCESS;
}


void circo(elem* l) {
elem* aux;
aux=l;
while (aux->next != 0) aux=aux->next;
aux->next=l;}

void deall(int n, elem* l) {
int i=0;
int j=(i-1);
elem* aux=l;
elem* aux1=l;
cout << "Inserisci l'elemento n da deallocare: ";
cin >> n;
for (i=0; i<=n; i++)
aux=aux->next;
for (j=0; j<=(n-1); j++)
aux1=aux1->next;
aux1->next=aux->next;
delete aux;
return;}


---


Secondo me il problema 'sta nel void deall (i passaggi precedenti fungono: la lista viene scritta e resa circolare per bene) .. per non ci riesco a sortir le gambe.

Sar eternamente grato a chi mi aiuta.

Unspeakable
11-12-2007, 18:42
Dai, dai. Qualcuno? :D

Unspeakable
14-12-2007, 18:15
:cry: :D

Loading