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
  1. Liczba elementów listy - iteracyjnie
  2. Liczba elementów listy - rekurencyjnie
  3. Stos lista (2 pkt termin: 20:00:00 druga środa po zajęciach i zad. 4)
  4. Kolejka lista (2 pkt termin: 20:00:00 druga środa po zajęciach i zad. 3)
  5. Odwracanie listy dwukierunkowej