algorytm.org

Implementacja w Java



Baza Wiedzy
wersja offline serwisu przeznaczona na urządzenia z systemem Android
Darowizny
darowiznaWspomóż rozwój serwisu
Nagłówki RSS
Artykuły
Implementacje
Komentarze
Forum
Bookmarki






Sonda
Implementacji w jakim języku programowania poszukujesz?

Stos - Implementacja w Java
Ocena użytkownikóww: *****  / 5
SłabyŚwietny
Nadesłany przez Kamil Dworak, 25 lipca 2010 12:39
Kod przedstawiony poniżej przedstawia główną część rozwiązania problemu.
Pobierz pełne rozwiązanie.

Jeżeli nie odpowiada Ci sposób formatowania kodu przez autora skorzystaj z pretty printer'a i dostosuj go automatycznie do siebie.

stos_1_j.java:
/****************************************
*	Implementacja stosu					*	
*	www.algorytm.org					*
*	Opracowal Dworak Kamil 				*
*****************************************/

import java.util.*;

/* pojedynczy element */
class Elem {
	int wartosc;
	Elem next;
	
	/* konstruktor */
	public Elem(int x, Elem n){
		next=n;
		wartosc=x;
	}
	
	/* zwracam wskzaznik na nastepny obiekt */
	public Elem getNext(){
		return next;
	}
	
	/* zwracam przechowywana wartosc */
	public int getWartosc(){
		return wartosc;
	}
}


public class Stos {
	
	/* wierzcholek stosu */
	Elem start;
	
	Stos(){
		start=null;
	}
	
	/* zwracam wartosc wierzcholka */
	public Elem getStart(){
		return start;
	}
	
	/* dodaje element do stosu */
	public void push(int x){
		Elem temp = new Elem(x,start);
		start=temp;
	}
	
	/* sciagam element ze stosu */
	public void pop(){
		if(start!=null){
			start = start.getNext();
		} else {
			System.out.println("Stos jest pusty");
		}
		
	}
	
	/* wyswietlam zawartosc stosu */
	public void show(){
		if(start!=null){
			Elem temp = start;
			while(temp!=null){
				System.out.print(temp.getWartosc() + " ");
				temp=temp.getNext();
			}
			System.out.println();	
		} else {
			System.out.println("Stos jest pusty");
		}
	}
	
	/* zwracam ile elementow jest na stosie */
	public int zlicz(){
		if(start!=null){
			Elem temp = start;
			int licznik=0;
			while(temp!=null){
				licznik++;
				temp = temp.getNext();
			}
			return licznik;
		}
		else return 0;
	}
	
	/* 
	 * odwracam kolejnosc elemetow na stosie
	 * wspomagajac sie dodatkowymi dwoma stosami
	 */
	public void reverse(Stos stos2, Stos stos3){
		if(start!=null){
			Elem temp = start;
			while(temp!=null){
				stos2.push(temp.getWartosc());
				this.pop();
				temp=temp.getNext();
			}
			while(stos2.getStart()!=null){
				stos3.push(stos2.getStart().getWartosc());
				stos2.pop();
			}
			while(stos3.getStart()!=null){
				this.push(stos3.getStart().getWartosc());
				stos3.pop();
		}
		}
	}
	
	/*
	 * porzadkuje kolejnosc elementow na 
	 * stosie (od min do max)
	 * 
	 */
	public void sort(Stos stos2){
		if(start!=null){
			int licznik = this.zlicz();
			int max, licznik2=0;
			
			while(licznik!=0){
				
				Elem temp = start;
				max = temp.getWartosc();
				while(temp!=null){
					if(max>temp.getWartosc()){
						max = temp.getWartosc();
					}
					temp = temp.getNext();
					}
				
			while(start!=null){
				if(start.getWartosc()!=max){
					stos2.push(start.getWartosc());
					this.pop();
					licznik2++;
				} else {
					this.pop();
					while(licznik2!=0){
						this.push(stos2.getStart().getWartosc());
						stos2.pop();
						licznik2--;
					}
					stos2.push(max);
					break;
				}	
			}
			licznik--;
		}
			
		while(stos2.getStart()!=null){
			this.push(stos2.getStart().getWartosc());
			stos2.pop();
		}
	} else {
		System.out.println("Stos jest pusty");
	}
}
	
	public static void menu(){
		System.out.println("(0) Menu\n(1) PUSH\n(2) POP\n(3) SHOW");
		System.out.println("(4) ZLICZ\n(5) REVERSE\n(6) SORT\n(7) EXIT");
	}
	
	/* main */
	public static void main(String[]args){
		Stos stos1 = new Stos();
		Stos stos2 = new Stos();
		Stos stos3 = new Stos();
		
		Scanner in = new Scanner(System.in);
		
		int t;
		
		while(in.hasNext()){
			t=in.nextInt();
			switch(t){
			case 0: Stos.menu();break;
			case 1: t=in.nextInt();stos1.push(t);break;
			case 2: stos1.pop();break;
			case 3:stos1.show();break;
			case 4:System.out.println(stos1.zlicz());break;
			case 5:stos1.reverse(stos2, stos3);break;
			case 6:stos1.sort(stos2);break;
			case 7:System.exit(0);
			default:;
			}
		}
		
		
	}
}
Dodaj komentarz