#
# Eksamen 1997 Januar 3
#
# Tue May 18 09:52:40 1999 -- Jens Svalgaard Frederiksen
#

# b)

# I Python bruges
slow, fast = 0, 1

# Til ElementType bruges tupler af (service, data) sammen med
service, data = 0,1
# og
def makeElement(s,d):
  return (s,d)
# således at fx. e[service] er service-typen

# Til SplitqueueType bruges en tuppel bestående af to lister med
# hhv. den langsomme og hurtige kø
slowqueue, fastqueue = 0, 1

def makeSplitqueue():
  return ([],[])

def empty(q):
  return len(q[0]) == 0 and len(q[1]) == 0

def insert(q,e):
  if e[service] == slow:
    q[slowqueue].append(e)
  else:
    q[fastqueue].append(e)

def remove_slow(q):
  if empty(q):
    raise "Split-køen er tom!"
  else:
    if q[slowqueue] != []:
      x = q[slowqueue][0]
      del q[slowqueue][0]
      return x
    else:
      # Ellers må der være noget i den hurtige kø
      return remove_fast(q)

def remove_fast(q):
  if empty(q):
    raise "Split-køen er tom!"
  else:
    if q[fastqueue] != []:
      x = q[fastqueue][0]
      del q[fastqueue][0]
      return x
    else:
      # Ellers må der være noget i den langsomme kø
      return remove_slow(q)


