powrót
Ćwiczenia 9 - Listy z dowiązaniami (2 pkt termin: 20:00:00 druga środa po zajęciach)
Main
STRUCT-LIST L
INIT(L) /*inicjuje zmienne*/
WRITE(L) //
LIST-INSERT(L,1)
LIST-INSERT(L,2)
WRITE(L) //2 1
LIST-INSERT(L,3)
LIST-SEARCH(L,2) //2
LIST-SEARCH(L,4) //-1
LIST-INSERT-AFTER(L,4,2)
WRITE(L) //3 2 4 1
LIST-DELETE(L,2)
WRITE(L) //3 4 1
LIST-DELETE(L,5)
WRITE(L) //3 4 1
LIST-INSERT-BEFORE(L,5,3)
WRITE(L) //5 3 4 1
CLEAR(L) /*zwalnia pamięć*/
WRITE(L) //
Lista
STRUCT-LIST
head = NIL
tail = NIL
STRUCT-NODE
key = NIL
next = NIL
prev = NIL
LIST-INSERT(L, k)
x.key = k
x.next = L.head
x.prev = NIL
if L.head ≠ NIL
L.head.prev = x
else
L.tail = x
L.head = x
LIST-SEARCH(L,k)
x = L.head
while x ≠ NIL AND x.key ≠ k
x = x.next
if x = NIL
return -1
else
return x.key
LIST-INSERT-AFTER(L, j, k)
x.key = j
y = LIST-SEARCH-NODE(L,k)
x.prev = y
x.next = y.next
if y.next ≠ NIL
y.next.prev = x
else
L.tail = x
y.next = x
LIST-INSERT-BEFORE(L, j, k)
x.key = j
y = LIST-SEARCH-NODE(L,k)
x.prev = y.prev
x.next = y
if y.prev ≠ NIL
y.prev.next = x
else
L.head = x
y.prev = x
LIST-DELETE(L,k)
x = LIST-SEARCH-NODE(L,k)
if x.prev ≠ NIL
x.prev.next = x.next
else
L.head = x.next
if x.next ≠ NIL
x.next.prev = x.prev
else
L.tail = x.prev
- Liczba elementów listy - iteracyjnie
- Liczba elementów listy - rekurencyjnie
- Stos lista (2 pkt termin: 20:00:00 druga środa po zajęciach i zad. 4)
- Kolejka lista (2 pkt termin: 20:00:00 druga środa po zajęciach i zad. 3)
- Odwracanie listy dwukierunkowej