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

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


Здравейте хора, кякой може ли да каже как да оправя програмата. Мерси предварително.

Да се направи функция за копиране на дадена опашка C++ 

 

#include <iostream>
using namespace std;
struct elem
{
    int key; elem *next;
};

void push(elem * &first, elem * &last, elem * p, int n);
int pop(elem * &first, elem * &last, elem * &p, int &n);
void copyQueue(elem * first, elem * last, elem * p, elem * &first2, elem * &last2, elem * &p2, int num);

int main()
{
    int num;

    elem *first = NULL, *last = NULL, *p;
    elem *first2 = NULL, *last2 = NULL, *p2;


    cout << "\n ~~~ Enter a symbol to stop entering numbers ~~~\n";
    cout << "\n Enter numbers:  \n";
    while (cin >> num)
        push(first, last, p, num);
    cout << "\n The numbers are:  \n";
    //while (pop(first, last, p, num))
//    {
//        cout << num << " ";
//    }


    copyQueue(first, last,p , first2, last2, p2, num);
    while (pop(first2, last2, p2, num))
    {
        cout << num << " ";
    }

    cout << "\n";

    while (pop(first, last, p, num))
    {
        cout << num << " ";
    }
}

void push(elem * &first, elem * &last, elem * &p, int n)
{
    p = last;
    last = new elem;
    last->key = n;
    last->next = NULL;
    if (p != NULL) p->next = last;
    if (first == NULL)
    {
        first = last;
    }
}

int pop(elem * &first, elem * &last, elem * &p, int &n)
{
    if (first)
    {
        n = first->key;
        p = first;
        first = first->next;
        if (first == NULL) last = first;
        delete p;
        return 1;
    }
    else
        system("pause");
    return 0;
}

void copyQueue(elem * first, elem * last, elem * p, elem * &first2, elem * &last2, elem * &p2, int num)
{

    while (pop(first, last, p, num))
    {
        push(first2, last2, p2, num);
    }

}
 

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


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

Това не ми звучи логично много

nt pop(elem * &first, elem * &last, elem * &p, int &n)
{
    if (first)
    {
        n = first->key;
        p = first;
        first = first->next;
        if (first == NULL) last = first;
        delete p;
        return 1;
    }
    else
        system("pause"); //защо спираш програмата?	
    return 0;
} 

 

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


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

Това не ми звучи логично много


nt pop(elem * &first, elem * &last, elem * &p, int &n)
{
    if (first)
    {
        n = first->key;
        p = first;
        first = first->next;
        if (first == NULL) last = first;
        delete p;
        return 1;
    }
    else
        system("pause"); //защо спираш програмата?	
    return 0;
} 

Без да искам съм цъкнал ctr+V. В програмата има по-големи проблеми от това, ако може да помогнеш. 

 

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


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

Добавете отговор

Можете да публикувате отговор сега и да се регистрирате по-късно. Ако имате регистрация, влезте в профила си за да публикувате от него.

Гост
Напишете отговор в тази тема...

×   Вмъкнахте текст, който съдържа форматиране.   Премахни форматирането на текста

  Разрешени са само 75 емотикони.

×   Съдържанието от линка беше вградено автоматично.   Премахни съдържанието и покажи само линк

×   Съдържанието, което сте написали преди беше възстановено..   Изтрий всичко

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Добави ново...

Информация

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