powrót

Ćwiczenia 9 - Listy z dowiązaniami (2 pkt termin: 20:59:00 10-12-2015)

Main

STRUCT-LIST L
WRITE(L)
LIST-INSERT(L,1)
LIST-INSERT(L,2)
WRITE(L)
LIST-INSERT(L,3)
LIST-SEARCH(L,2)
LIST-SEARCH(L,4)
LIST-INSERT-AFTER(L,2,4)
WRITE(L)
LIST-DELETE(L,2)
WRITE(L)
LIST-DELETE(L,5)
WRITE(L)
LIST-INSERT-BEFORE(L,3,5)
WRITE(L)

Lista

STRUCT-LIST
	head = NIL
	{tail = NIL}
STRUCT-NODE
	key = NIL
	next = NIL
	{prev = NIL}
LIST-INSERT(L, x)
	x.next = L.head
	{if L.head ≠ NIL
		L.head.prev = x}
	L.head = x
	{x.prev = NIL}
LIST-SEARCH(L,k)
	x = L.head
	while x ≠ NIL AND x.key ≠ k
		x = x.next
	return x
LIST-INSERT-AFTER(L, x, y)
	{x.prev = y}
	x.next = y.next
	{if y.next ≠ NIL
		y.next.prev = x}
	y.next = x
LIST-INSERT-BEFORE(L, x, y)
	{x.prev = y.prev}
	x.next = y
	{if y.prev ≠ NIL
		y.prev.next = x}
	y.prev = x // !
LIST-DELETE(L,x)
	{if x.prev ≠ NIL
		x.prev.next = x.next
	else}
		L.head = x.next // !
	{if x.next ≠ NIL
		x.next.prev = x.prev}
  1. Liczba elementów listy - iteracyjnie
  2. Liczba elementów listy - rekurencyjnie
  3. Stos lista (2 pkt termin: 20:59:00 10-12-2015 i zad. 4)
  4. Kolejka lista (2 pkt termin: 20:59:00 10-12-2015 i zad. 3)
  5. Odwracanie listy dwukierunkowej