powrót

Ćwiczenia 10 - Stosy i kolejki

Main

STRUCT-STACK S
INIT(S) /*inicjuje zmienne*/
PUSH(S,1)
PUSH(S,2)
WRITE(S) //1 2
PUSH(S,3)
WRITE(S) //1 2 3
WRITE(STACK-EMPTY(S)) //false
WRITE(POP(S)) //3
WRITE(POP(S)) //2
WRITE(S) //1
WRITE(POP(S)) //1
WRITE(POP(S)) //niedomiar
WRITE(S) //
WRITE(STACK-EMPTY(S)) //true

STRUCT-QUEUE Q
INIT(Q) /*inicjuje zmienne*/
ENQUEUE(Q,1)
ENQUEUE(Q,2)
WRITE(Q) //1 2
ENQUEUE(Q,3)
WRITE(Q) //1 2 3
WRITE(QUEUE-EMPTY) //false
WRITE(DEQUEUE(Q)) //1
WRITE(DEQUEUE(Q)) //2
WRITE(Q) //3
WRITE(DEQUEUE(Q)) //3
WRITE(DEQUEUE(Q)) //niedomiar
WRITE(Q) //
WRITE(QUEUE-EMPTY) //true

Stos (0,5 pkt termin: 20:00:00 pierwsza środa po zajęciach)

STRUCT-STACK
	data[1..10]
	top = 0
STACK-EMPTY(S)
	if S.top = 0
		return true
	else
		return false
PUSH(S,k)
	if S.top + 1 > n
		error "przepełnienie"
	else
		S.top = S.top + 1
		S.data[S.top] = k
POP(S)
	if S.top = 0
		error "niedomiar"
	else
		S.top = S.top - 1
	return S.data[S.top + 1]

Kolejka (0,5 pkt termin: 20:00:00 pierwsza środa po zajęciach)

STRUCT-QUEUE
	data[1..10]
	length = 10
	head = 1
	tail = 1
QUEUE-EMPTY(Q)
	if Q.head = Q.tail
		return true
	else
		return false
ENQUEUE(Q,k)
	if Q.tail = Q.length
		if Q.head = 1
			error "przepełnienie"
		else
			Q.data[Q.tail] = k
			Q.tail = 1
	else
		if Q.head = Q.tail + 1
			error "przepełnienie"
		else
			Q.data[Q.tail] = k
			Q.tail = Q.tail + 1
DEQUEUE(Q)
	if Q.head = Q.tail
		error "niedomiar"
	else
		k = Q.data[Q.head]
		if Q.head = Q.length
			Q.head = 1
		else
			Q.head = Q.head + 1
		return k
  1. Scalanie dwóch stosów
  2. Scalanie dwóch kolejek
  3. Rozmiar kolejki
  4. Implementacja stosu przy pomocy dwóch kolejek (2 pkt termin: 20:00:00 pierwsza środa po zajęciach lub zad.5)
  5. Implementacja kolejki przy pomocy dwóch stosów (2 pkt termin: 20:00:00 pierwsza środa po zajęciach lub zad.4)