Struktury danych/Stosy/Przykładowe implementacje

Python

edytuj

Do emulacji działania stosu wykorzystamy listę i dwie jej metody: append() oraz pop().

stos = [] # tworzymy listę

stos.append(1) # metoda append() działa identycznie jak opisywany push()
stos.append(2)
stos.append(3)

# w tym momencie na stosie są 3 elementy
print "Na stosie sa " + str(len(stos)) + " elementy"

x = stos.pop() # zdejmujemy przed chwilą dodane elementy ze stosu
y = stos.pop()
z = stos.pop()
#define STOS_MAX 10 // stos 10-elementowy

int stos[STOS_MAX];
int szczyt=0;

push(element) {
	if(szczyt < STOS_MAX) {
		/* wrzuć na stos */
		stos[szczyt] = element;
		szczyt++;
	}
	else {
		/* stos jest już pełny */
		...
	}
}

pop() {
	if(szczyt != 0) {
		/* zdejmij ze stosu */
		szczyt--;
		return stos[szczyt];
	}
	else {
		/* stos jest już pusty */
		...
	}

}
class Stos<E> {
     Object[] tablica;   //tablica elementow stosu
     licznik = 0;
     
     public Stos(int rozmiar) {
         this.tablica  = new Object[rozmiar]; // tworzenie tablicy na elementy 
     }

     public void poloz(E wartosc) {
         this.tablica[licznik] = wartosc;
         this.licznik = this.licznik + 1;
     };

     public E sciagnij() {
         this.licznik = this.licznik - 1;
         return (E) this.tablica[this.licznik];
    };
 };
class Stos {

	private int[] wektor;
	private int top;

	public Stos() {
		this(10);
	}

	public Stos(int rozmiar) {
		wektor = new int[rozmiar];
		top = -1;
	}

	public void push(int element) {
		wektor[++top] = element;
	}

	public int pop() {
		return wektor[top--];
	}

	public boolean czyPusty() {
		return (top == -1);
	}

	public boolean czyPelny() {
		return (top == wektor.length);
	}

	public int peek() {
		return wektor[top];
	}
	
	public void wyswietl() {	
	   for(int i = 0; i <= top; i++)
	   System.out.print(wektor[i] + " ");
	   System.out.println();
	}

	public int rozmiar() {
		return top + 1;
	}

}