Listy
Janusz Sobieraj - 28 LO

Listy, kolejki i stosy


Lista
Najprościej można zdefiniować listę, jako pewien uszeregowany ciąg elementów, o dostępie sekwencyjnym. Oznacza to, że dane zawarte na liście można przeglądać tylko po kolei.
Zobacz też →definicję w Wikipedii

Z wikipedii
Stos (ang. Stack) ? liniowa struktura danych, w której dane dokładane są na wierzch stosu i z wierzchołka stosu są pobierane (bufor typu LIFO, Last In, First Out; ostatni na wejsciu, pierwszy na wyjsciu).

Z wikipedii
Kolejka (ang. queue) ? liniowa struktura danych, w której nowe dane dopisywane są na końcu kolejki, a z początku kolejki pobierane są dane do dalszego przetwarzania (bufor typu FIFO, First In, First Out; pierwszy na wejściu, pierwszy na wyjściu).

Praktycznie każdy nowoczesny, obiektowy język programowania zawiera implementację listy.
  1. Lista zawarta jest w Standardowej bibliotece C++ - STL. Została ona zaprojektowana w taki sposób, aby można bylo na niej przechowywać zarówno proste typy danych, takie jak int lub double jak również obiekty klas.
    W internecie można znaleźć wiele opisów tej biblioteki np w Wikipedii lub na jednym z licznych kursów C++
  2. Java oferuje specjalizowane klasy kolekcyjne : Vector , Stack i Hashtable
[Twoja przeglądarka nie obsługuje apletów Javy] Obok prosty aplet ilustrujący działanie klasy Stock.
Oto jego listing (prawie)
import java.awt.*; 
import java.applet.*; 
import java.util.*; 

public class Stos extends Applet 
{ 
 Stack stos; 
 Random r=new Random(); 
 String ulozono="Tak tworzono: "; 
//--------------------------------- 
void robimy_stos() 
{ 
 int x=1,n=r.nextInt(6)+1,y=n; 
 stos=new Stack( ); 
 while(x<=n) 
  { 
    stos.push(new Point(x,y)); 
    ulozono+="("+x+","+y+") "; 
    x++;y--; 
  } 
} 
//-----------------------------------
public void paint(Graphics g) 
{ 
  Point w=new Point(); 
  String wyjeto="A tak odczytano: "; 

  robimy_stos(); 
  g.drawString(ulozono,15,10); 
  while(!stos.empty()) 
    { 
      w=(Point)stos.pop(); 
      wyjeto+="("+w.x+","+w.y+") "; 
    } 
  g.drawString(wyjeto,5,30); 
  } 
}  




Samodzielna implementacja listy jest bardzo dobrym ćwiczeniem programistycznym.
Uczy zwłaszcza panowania nad pamięcią, unikania marnotrawstwa pamięci, a także pozwala lepiej poznać zasade działania tej struktury danych.
Zobacz następne podrozdziały, gdzie bedę tworzył wlasną listę (stos).
Nie bez znaczenia może być tez satysfakcja z "własnej" produkcji.
Bedę sugerował właśnie taką samodzielność rozwiaząnia. Zwłaszcza, że to nic trudnego.