#include
using namespace std;
const int max_size = 50;
struct magacin {
int idx, niza[max_size];
void init() {
idx = -1;
}
bool isEmpty() {
if(idx == -1) {
return true;
}
return false;
}
bool isFull() {
if(idx == max_size - 1) {
return true;
}
return false;
}
void push(int x) {
if(isFull()) {
cout << "Stekot e full" << endl;
return;
}
idx++;
niza[idx] = x;
}
int pop() {
if(isEmpty()) {
cout << "Prazen stek" << endl;
exit(0);
}
return niza[idx--];
}
int top() {
if(isEmpty()) {
cout << "prazen stek" << endl;
exit(0);
}
return niza[idx];
}
};
struct node {
int val;
node *next, *prev;
};
struct DoublyLinkedList {
node *head, *tail;
void init() {
head = NULL;
tail = NULL;
}
void dodadiPrv(int x) {
node *tmp = new node;
tmp->val = x;
if(head == NULL) {
head = tmp;
tail = head;
}
else {
tmp->next = head;
head->prev = tmp;
head = tmp;
}
}
void dodadiPosleden(int x) {
node *tmp = new node;
tmp->val = x;
if(head == NULL) {
head = tmp;
tail = head;
}
else {
tail->next = tmp;
tmp->prev = tail;
tail = tmp;
}
}
void brishiPrv() {
if(head->next == NULL) {
delete head;
head = NULL;
tail = NULL;
}
if(head != NULL) {
node *tmp = head;
head = head->next;
delete tmp;
}
}
void brishiPosleden() {
if(head->next == NULL) {
delete head;
head = NULL;
tail = NULL;
}
else {
node *tmp = tail;
tail = tail->prev;
delete tail;
}
}
void brishiLista() {
while(head != NULL) {
brishiPrv();
}
}
void pechati() {
node *tmp = head;
while(tmp != NULL) {
cout << tmp->val << " <--> ";
tmp = tmp->next;
}
cout << endl;
}
bool dodadiPosle(int el) {
node *tmp = head;
bool ok = false;
while(tmp != NULL) {
if(tmp->val == el) {
ok = true;
break;
}
tmp = tmp->next;
}
if(ok) {
node * new_node = new node;
new_node->val = el;
if(tmp->next == NULL) {
dodadiPosleden(el);
return ok;
}
node *sleden = tmp->next;
tmp->next = new_node;
new_node->prev = tmp;
new_node->next = sleden;
sleden->prev = new_node;
}
return ok;
}
};
void raspredelba(magacin m, DoublyLinkedList & even, DoublyLinkedList & odd) {
while(!m.isEmpty()) {
int el = m.top();
m.pop();
if(el != 0) {
if(el % 2 == 0 && el <= 10) {
if(!even.dodadiPosle(el)) {
even.dodadiPosleden(el);
}
}
else if(el % 2 == 1 && el > 10){
if(!odd.dodadiPosle(el)) {
odd.dodadiPosleden(el);
}
}
}
}
}
int main()
{
magacin m;
m.init();
for(int i = 0; i < 13; i++) {
int x;
cin >> x;
m.push(x);
}
DoublyLinkedList even, odd;
even.init();
odd.init();
raspredelba(m, even, odd);
cout << "Parni: ";
even.pechati();
cout << "Neparni: ";
odd.pechati();
return 0;
}
// 8 0 17 4 9 16 5 25 0 10 17 33 8