Kitab rəfi#8355

Kitab rəfi (Həll təhlili)

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:

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:

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())