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
- Scalanie dwóch stosów
- Scalanie dwóch kolejek
- Rozmiar kolejki
- Implementacja stosu przy pomocy dwóch kolejek (2 pkt termin: 20:00:00 pierwsza środa po zajęciach lub zad.5)
- Implementacja kolejki przy pomocy dwóch stosów (2 pkt termin: 20:00:00 pierwsza środa po zajęciach lub zad.4)