Se da o lista liniara simplu inlanutita. Sa se scrie o procedura care adauga dupa fiecare element de pe pozitiile impare p, un numar de p elemente avand ca si continut valoarea elementului de pozitia p.
Ex: Daca lista inițială este : 2,4,6,11
Dupa adaugare ea va contine: 2,2,4,6,6,6,6,11.
Răspunsuri la întrebare
Răspuns:
#include <iostream>
#include <queue>
using namespace std;
int main()
{
queue<int> lista,lista_p; //declaram lista
int n, element, p,count=1;
cin >> n; //introducem numarul de elemente pe care o sa il aiba lista
while (n != 0) //construim lista
{
cin >> element;
lista.push(element); //adaugam elemente in lista
n--;
}
while (!lista.empty()) //cat timp lista nu este goala
{
if (count % 2 == 1) //se verifica daca elementul este pe o pozitie impara
{
p = count;
while (p != 0) { //se adauga p elemente
lista_p.push(lista.front());
p--;
}
}
lista_p.push(lista.front());
lista.pop();
count++;
}
while (!lista_p.empty())//se afiseaza lista
{
cout << lista_p.front()<<" ";
lista_p.pop();
}
}
Sper sa fie de ajutor