Programma che dovrebbe simulare la coda

di il
3 risposte

Programma che dovrebbe simulare la coda

Salve a tutti , devo creare un programmino che simuli una coda , ho fatto le funzioni di push e pop ma non funzionano. La funzione di push aggiunge un valore negativo enorme , mentre la funzione pop non mi cancella il numero ma lo diminuisce di 1 , mi potreste dare una mano anche spiegandomi meglio i passaggi che dovrebbero effettuare queste funzioni?

#include <iostream>
#define MAX 10
using namespace std;

int pop(int v[]);
void push (int v[]);

int main()
{
   int v[MAX];
   int opzione;
   //allocazione dinamica
   int *array;
   array=(int*) malloc (MAX *sizeof(int));
   for (int i=0;i<MAX;i++)
   {
       cout << "Inserisci elemento : ";
       cin >> v[i];
   }
   // Menu
   cout << "------MENU------"<<endl;
   cout << "1)Inserisci un elemento all'inizio della coda."<<endl;
   cout << "2)Elimina un elemento in fondo alla coda."<<endl;
    cin >> opzione;
   if (opzione==1)
   {
   push(v);
   }
   if (opzione==2)
   {
   pop(v);
   for (int i=0;i<MAX;i++)
   {
       cout << v[i]<<endl;
   }
   }

    return 0;
}
void push (int v[])
{
    int elemento;
    cout << "Inserisci l'elemento che vuoi aggiungere alla coda : ";
    cin >> elemento;
    elemento=v[MAX+1];
    for (int i=0;i<(MAX+1);i++)
    {
        cout << v[i]<<endl;
    }
}
int pop(int v[])
{
    v[0]=v[0]-1;
    return v[v[0]+1];
}

3 Risposte

  • Re: Programma che dovrebbe simulare la coda

    Ma nella push questa linea

    elemento=v[MAX+1];

    secondo te cosa fa?
  • Re: Programma che dovrebbe simulare la coda

    oregon ha scritto:


    Ma nella push questa linea

    elemento=v[MAX+1];

    secondo te cosa fa?
    Aggiunge una cella al vettore e ci mette l'elemento da inserire , non è corretto?
  • Re: Programma che dovrebbe simulare la coda

    E' piu' semplice implementare una coda usando una lista concatenata;
    si fa pop() e push() maneggiando i puntatori al primo e all'ultimo
    nodo della lista.

    Sei obbligato a usare un array?

    Nel tuo programma allochi spazio in memoria (puntato da array)
    che poi non usi.

    Con elemento=v[MAX+1]; vai a leggere una zona di memoria
    esterna a v[]; sovrascrivi il valore inserito con cin;
    e il valore di elemento si perde dopo l'uscita
    dalla funzione, trattandosi di variabile locale.

    Non capisco le istruzioni v[0]=v[0]-1; e return v[v[0]+1].
Devi accedere o registrarti per scrivere nel forum
3 risposte