Премини към съдържанието
  • Добре дошли!

    Добре дошли в нашите форуми, пълни с полезна информация. Имате проблем с компютъра или телефона си? Публикувайте нова тема и ще намерите решение на всичките си проблеми. Общувайте свободно и открийте безброй нови приятели.

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

     

функция за копиране на опашка


Birhan Husein
 Сподели

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

Да се състави функция за копиране на дадена опашка.Стигнал съм до една част,но не мога да измисля копирането.Някой съвет?

#include <iostream>
using namespace std;
struct elem
{
    int key;
    elem *next;
}*f1=NULL, *l1=NULL, *f2=NULL, *l2=NULL;
void copyQueue(int n,elem *&first,elem *&last);
void push(int n,elem *&first,elem *&last)
{
    elem *p=last;
    last=new elem;
    last->key=n;
    last->next=NULL;
    if(p!=NULL)
        p->next=last;
    else
        first=last;
}
int pop(int &n,elem *&first,elem *&last)
{
    elem *p=NULL;
    if(first)
    {
        n=first->key;
        p=first;
        first=first->next;
    if (first==NULL)
        last=first;
    delete p;
    return 1;
    }
    else
        return 0;
}
void main()
{
    int num;
    do{
        cout<<"Vuvedete stoinost: ";
        cin>>num;
        push(num,f1,l1);
      }while(num!=0);
    cout<< "Stoinosti na opashkata: "<<endl;
    while(pop(num,f1,l1))
    {
        cout<<num<<" ";
    }
    
    
    
 

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

Не е ясно какво точно искаш да се направи. копират се елементите от едната опашка в другата, но какво става с първата опашка запазва ли стойностите си или трябва да се изпразни? И друго ако втората опашка преди копирането не е празна , елементите от първата ги добавяш към края й или първо я изчистваш и след това добавяш елементите?

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

Да запазват се стойностите,а втората първо я изчистваме ако не е празна и след това се добавят елементите.Някакъв съвет как би трябвало да стане ?

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

Нещо такова, само че съм ги събрал указателите за началото и края на опашката в отделна структура за да са на едно място.

#include <iostream>

using namespace std;

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

struct queue
{
    elem *start;
    elem *end;
} ;


int pop(queue &q)
{
    elem *p=q.start;
    int n=p->key;
    q.start=p->next;
    if (q.start==NULL) q.end=NULL;
    delete p;
    return n;
}

void push(queue &q, int n)
{
     elem *p=new elem;
     p->key = n;
     p->next= NULL;
     if (q.end) q.end->next=p;
     else q.start=p;
     q.end=p;
}

void copyqueue(queue &q, queue &s)
{
     while(q.start) pop(q);
     elem *p=s.start;
     while (p)
     {
         push(q,p->key);
         p=p->next;
     }
}

int main()
{
    queue q1={NULL, NULL};
    queue q2={NULL, NULL};
    int n;
    
    while (1)
    {
        cout<<"Vuvedete stoinost: ";
        cin>>n;
        if (n==0) break;
        push(q1,n);
    }
    copyqueue(q2,q1);
    cout<< "Stoinosti na opashka 1: ";
    while(q1.start)
    {
        cout<<pop(q1)<<" ";
    }
    cout<<endl<<endl;
    cout<< "Stoinosti na opashka 2: ";
    while(q2.start)
    {
        cout<<pop(q2)<<" ";
    }
}

 

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

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

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

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

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

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

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

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

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

 Сподели

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