Rəflərə kitablar düzülən rəf iki tərəfli növbəni təmsil edir. Problemdə aşağıdakı əməliyyatları simulyasiya etmək tələb olunur:
push_front — nömrəsi olan kitabı soldan qoyuruq;
push_back — nömrəsi olan kitabı sağdan qoyuruq;
pop_front() — kitabı soldan götürürük;
pop_back() — kitabı sağdan götürürük;
Nümunə
Kitabların rəfə düzülmə ardıcıllığını nəzərdən keçirək.
Kitablar rəfdən aşağıdakı ardıcıllıqla götürülür:
pop\_front() — nömrəsi olan kitab;
pop\_back() — nömrəsi olan kitab;
pop\_front() — nömrəsi olan kitab;
pop\_front() — nömrəsi olan kitab;
pop\_back() — nömrəsi olan kitab;
Alqoritmin reallaşdırılması
İş növbəsini elan edirik.
deque<int> s;Əməliyyatların sayını oxuyuruq.
scanf("%d",&n);Ardıcıllıqla əməliyyatı yerinə yetiririk.
for(i = 0; i < n; i++)
{Əməliyyat kodunu oxuyuruq.
scanf("%d",&cmd);
if (cmd == 1)
{Nömrəsi olan kitabı rəfə soldan qoyuruq.
scanf("%d",&val);
s.push_front(val);
} else
if (cmd == 2)
{Nömrəsi olan kitabı rəfə sağdan qoyuruq.
scanf("%d",&val);
s.push_back(val);
} else
if (cmd == 3)
{Kitabın nömrəsini soldan çıxarırıq və onu götürürük.
printf("%d\n",s.front());
s.pop_front();
} else
{Kitabın nömrəsini sağdan çıxarırıq və onu götürürük.
printf("%d\n",s.back());
s.pop_back();
}
}Java reallaşdırılması — LinkedList
import java.util.*;
public class Main
{
public static void main(String[] args)
{
Scanner con = new Scanner(System.in);
Deque<Integer> q = new LinkedList<Integer>();
int n = con.nextInt();
for (int i = 0; i < n; i++)
{
int cmd = con.nextInt();
if (cmd == 1)
{
int val = con.nextInt();
q.addFirst(val);
} else
if (cmd == 2)
{
int val = con.nextInt();
q.addLast(val);
} else
if (cmd == 3)
{
System.out.println(q.getFirst());
q.removeFirst();
} else
{
System.out.println(q.getLast());
q.removeLast();
}
}
con.close();
}
} Python reallaşdırılması
İş növbəsi elan edirik.
from collections import deque
q = deque()Əməliyyatların sayını oxuyuruq.
n = int(input())Ardıcıllıqla əməliyyatı yerinə yetiririk.
for i in range(n):
op, *lst = list(map(int, input().split()))
if op == 1:Nömrəsi olan kitabı rəfə soldan qoyuruq.
q.appendleft(lst[0])
elif op == 2:Nömrəsi olan kitabı rəfə sağdan qoyuruq.
q.append(lst[0])
elif op == 3:Kitabın nömrəsini soldan çıxarırıq və onu götürürük.
print(q.popleft())
else:Kitabın nömrəsini sağdan çıxarırıq və onu götürürük.
print(q.pop())