PDA

View Full Version : 2 probleme..



AlieN
04-04-2015, 05:22 PM
1. Sa se implementeze o stiva de numere intregi utilizand o lista inlantuita.//c++
2. Sa se implementeze algoritmul Bucket-sort utilizand liste dublu inlantuite. //c++

Care ma ajuta, ca sunt cam praf in ale programarii:D!
Va rog! Daca puteti bineinteles!:D:D

Tiger
05-04-2015, 10:24 AM
Momentan sunt ocupat majoritatea timpului. Pe cand ti le trebuie?

Cea de a 2-a problema este un pic cam incerta. Ce primeste ca parametru, o lista sau un array-2d? Ce va returna, o lista sau un array-2d?

Problema 1:
#include <iostream>
#include <stdlib.h>

using namespace std;

typedef struct stiva{
int info;
struct stiva *next;
}Stiva;

Stiva* push(Stiva *st, int info)
{
// Cream o noua stiva
Stiva *nou = new Stiva;
// Completam informatia
nou->info = info;
// Verificam daca parametrul "st" este null (stiva este goala)
if (st == NULL)
{
nou->next = NULL; // daca este primul element, nu avem inca alte elemente, deci "nou->next" este NULL (vid)
return nou; // Returnam stiva creata
}

nou->next = st; // Daca "st" nu este null, adaugam stiva actuala la urmatorul element din noua stiva (nou->next)
return nou; // Returnam stiva creata
}

int pop(Stiva **st)
{
// Verificam daca parametrul "st" este null (stiva este goala)
if (*st == NULL)
{
cout<<"Lista vida!\n";
exit(1);
}

Stiva *n = *st; // Preluam stiva curenta (cu ultima informatie adaugata)
int informatie = n->info; // Preluam informatia

*st = (*st)->next; // Preluam informatia
// Stergem stiva actuala pentru ca am preluat informatia
delete n;
// Returnam informatia
return informatie;
}

bool removeAll(Stiva **st)
{
// Verificam daca parametrul "st" este null (stiva este goala)
if (*st == NULL)
return false; // Daca este deja goala returnam false (pentru a indica ca nu a putut sterge elementele din stiva)

Stiva *n, *aux;

n = *st; // Preluam stiva curenta (cu ultima informatie adaugata)
while(n != NULL)
{
aux = n; // Luam stiva curenta
n = n->next; // Preluam urmatoarea stiva
delete aux; // Stergem stiva curenta
}

*st = NULL;

return true; // Returnam true pentru a marca succesul
}

void afiseaza(Stiva *st)
{
Stiva *n;

for(n = st; n != NULL; n = n->next)
cout<<n->info<<endl;
}

int main()
{
Stiva *mystack = NULL;

mystack = push(mystack, 1);
mystack = push(mystack, 20);
mystack = push(mystack, 30);
mystack = push(mystack, 90);

afiseaza(mystack);

int info = pop(&mystack);
info = pop(&mystack);
info = pop(&mystack);

cout<<"Informatie extrasa: " << info<<endl;
cout<<"Stiva dupa multiple extrageri:\n";

afiseaza(mystack);

if(removeAll(&mystack) == true)
cout<<"Stiva a fost stearsa cu succes!\n";
else
cout<<"Stiva nu a putut fi stearsa!\n";

cout<<"Dupe stergerea completa a stivei:\n";
afiseaza(mystack);

return 0;
}

AlieN
05-04-2015, 12:56 PM
Cand poti! La problema 2 cred ca primeste array si returneaza array!Da poti face ce iti e tie mai usor!Aaaa si nu inteleg treaba cu "mystack" !:D
Multami!raman dator:P