Премини към съдържанието
mi7aka

Малко помощ за задача със стек?

Препоръчан отговор


Здравейте! Задачата  ми е да напиша функции за сравняване на два динамични стека,зададени със своите начални указатели:

 

-по брой елементи(без да се отчитат стойностите им);

 

-по съхраняваните в стековете стойности;

 

-по брой елементи и стойностите им.

 

Може ли някой да ми помогне за втората функция.Благодаря предварително.Досега съм написал това:

 

#include <iostream>

 

using namespace std;

 

 

 

struct elem {

 

 int key;

 

 elem *next;

 

}*start1 = NULL, *start2 = NULL;

 

 

 

void push(int &n, elem *&start) {

 

 elem *p = start;

 

 start = new elem;

 

 start->key = n;

 

 start->next = p;

 

}

 

 

 

int pop(int &n, elem *&start) {

 

 if (start)

 

 {

 

  n = start->key;

 

  elem *p = start;

 

  start = start->next;

 

  return 1;

 

 }

 

 else

 

 {

 

  return 0;

 

 }

 

}

 

 

 

int broi(int broi, elem *&start) {

 

 if (start)

 

 {

 

  elem *p = start;

 

  while (p != NULL)

 

  {

 

   broi++;

 

   p = p->next;

 

  }

 

  return broi;

 

 }

 

 else {

 

  return 0;

 

 }

 

}

 

 

 

void print() {

 

 int n;

 

 cout << "1:";

 

 while (pop(n, start1))

 

 {

 

  cout << "\t" << n;

 

 }

 

 cout << "2: ";

 

 while (pop(n, start2))

 

 {

 

  cout << "\t" << n;

 

 }

 

 cout << endl;

 

}

 

 

 

 

 

void main() {

 

 int n;

 

 do

 

 {

 

  cout << "Chislo:\n";

 

  cin >> n;

 

  if (n != 0) {

 

   push(n, start1);

 

  }

 

 } while (n != 0);

 

 

 

 do

 

 {

 

  cout << "Chislo za 2ri stek:\n";

 

  cin >> n;

 

  if (n != 0) {

 

   push(n, start2);

 

  }

 

 } while (n != 0);

 

 if ((broi(0, start1)) > (broi(0, start2)))

 

  cout << "Parvi stek ima poveche elementi " << endl;

 

 else if ((broi(0, start1)) < (broi(0, start2)))

 

  cout << "Vtori stek  ima poveche elementi" << endl;

 

 else if ((broi(0, start1)) == (broi(0, start2)))

 

  cout << "Stekovete sa ravni" << endl;

 

 

 

 

 

 system("pause");

 

}

 

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Доста нескопосан начин сравнение - по три пъти ги броиш едни и същи стекове и за какво е нужно да я предаваш тая 0 като параметър?

   int b=broi(start1)-broi(start2);
   if   (b>0)    cout << "Parvi stek ima poveche elementi " << endl;
   else if (b<0) cout << "Vtori stek  ima poveche elementi" << endl;
   else          cout << "Stekovete sa ravni" << endl;

 

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Регистрирайте се или влезете в профила си за да коментирате

Трябва да имате регистрация за да може да коментирате това

Регистрирайте се

Създайте нова регистрация в нашия форум. Лесно е!

Нова регистрация

Вход

Имате регистрация? Влезте от тук.

Вход


×

Информация

Поставихме бисквитки на устройството ви за най-добро потребителско изживяване. Можете да промените настройките си за бисквитки, или в противен случай приемаме, че сте съгласни с нашите условия за ползване.