Pagini recente » Cod sursa (job #2903838) | Istoria paginii utilizator/opreacosmin | Istoria paginii runda/uvs_training_runda.1 | Istoria paginii runda/geometrie01 | Cod sursa (job #2000239)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("deque.in");
ofstream out("deque.out");
const int NMax = 5e6 + 5;
struct elem {
int val;
elem *prv,*nxt;
elem() {
val = 0;
prv = 0;
nxt = 0;
}
};
struct deq {
int sz;
elem *st,*dr;
deq() {
sz = 0;
st = dr = 0;
}
void pushFront(int val) {
++sz;
if (sz == 1) {
st = new elem();
st -> val = val;
dr = st;
return;
}
elem *n = new elem();
n -> val = val;
n -> nxt = st;
st -> prv = n;
st = n;
}
int fata() {
if (sz == 0) {
return -1;
}
return st -> val;
}
void popFront() {
if (sz == 0) {
return;
}
if (sz == 1) {
popSingle();
return;
}
--sz;
elem *n = st -> nxt;
delete st;
st = n;
st -> prv = 0;
}
void pushBack(int val) {
++sz;
if (sz == 1) {
st = new elem();
st -> val = val;
dr = st;
return;
}
elem *n = new elem();
n -> val = val;
n -> prv = dr;
dr -> nxt = n;
dr = n;
}
int spate() {
if (sz == 0) {
return -1;
}
return dr -> val;
}
void popBack() {
if (sz == 0) {
return;
}
if (sz == 1) {
popSingle();
return;
}
--sz;
elem *n = dr -> prv;
delete dr;
dr = n;
dr -> nxt = 0;
}
void popSingle() {
sz = 0;
delete st;
st = 0;
dr = 0;
}
}Q;
int N;
int main()
{
Q.pushFront(2);
Q.pushFront(3);
Q.pushFront(4);
Q.pushBack(7);
Q.pushBack(8);
Q.pushBack(10);
while (Q.sz) {
cout<<Q.fata()<<' ';
Q.popFront();
}
in.close();
out.close();
return 0;
}