Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public interface Container {
- void put(double val);
- double get();
- int getSize();
- void clear();
- }
- import java.util.Scanner;
- public class Main{
- static Scanner sc = new Scanner(System.in);
- static void dialog(Container C) {
- System.out.println("Input value : ");
- double i = sc.nextDouble();
- C.put(i);
- double a = sc.nextDouble();
- C.put(a);
- System.out.println(C.getSize());
- System.out.println(C.get());
- System.out.println(C.get());
- System.out.println(C.getSize());
- C.clear();
- System.out.println("Done");
- System.out.println("Invalid value");
- }
- public static void main(String[] args){
- System.out.println("1 Stack");
- System.out.println("2 Queue");
- int read = sc.nextInt();
- Container c;
- while(true){
- switch(read){
- case 1:
- c = new Stack();
- dialog(c);
- break;
- case 2:
- c = new Queue();
- dialog(c);
- break;
- case 3:
- return;
- default:
- System.out.println("Invalid value");
- break;
- }
- }
- }
- }
- public class Queue implements Container{
- private Vector queue;
- public Queue(){
- queue=new Vector();
- }
- public void put(double val){
- int q=queue.getsize();
- queue.insert(val,q);
- };
- public double get(){
- queue.erase(0);
- return queue.get(0);
- };
- public int getSize(){
- return queue.getsize();
- };
- public void clear(){
- queue.clear();
- };
- }
- public class Stack implements Container{
- private Vector stack;
- public Stack(){
- stack=new Vector();
- }
- public void put(double val){
- stack.insert(val,0);
- };
- public double get(){
- double get = stack.get(0);
- stack.erase(0);
- return get;
- };
- public int getSize(){
- return stack.getsize();
- };
- public void clear(){
- stack.clear();
- };
- }
- public class Vector {
- protected double[] arr;
- protected int size=0;
- public Vector(){ //конструктор по умолчанию
- arr=new double[10];
- }
- public Vector(int capacity){ //конструктор с размером
- if(capacity>0)
- arr=new double[capacity];
- else
- System.out.println("Ошибка создания объекта! Размер массива должен быть больше нуля!");
- }
- public Vector(double[] arr){ //конструктор через массив
- size=arr.length;
- this.arr=new double[size+10];
- for(int i=0; i<size; i++)
- this.arr[i]=arr[i];
- }
- private void increase(){ //приватный вспомогательный метод для увеличения массива
- double[] tmp=new double[arr.length+10];
- for(int i=0; i<arr.length; i++)
- tmp[i]=arr[i];
- arr=tmp;
- }
- public int getsize(){ //получить текущий размер
- return size;
- }
- public double get(int pos) { //получить значение из ячейки
- if((pos<size)&&(pos>=0))
- return arr[pos];
- else return 0;
- }
- public void set(double val, int pos){ //замещение элемента
- if((pos<size)&&(pos>=0)) { //позиция должна быть строго меньше размера но не меньше нуля
- arr[pos]=val;
- }
- else System.out.println("Ошибка ввода! Неверные данные или элементы отсутствуют!");
- }
- public void insert(double val, int pos){ //добавление элемента
- if((pos<=size)&&(pos>=0)){ //позиция должна быть не больше размера и не меньше нуля
- for(int i=arr.length-1; i>pos; i--) //сдвиг элементов
- arr[i]=arr[i-1];
- arr[pos]=val;
- size++;
- //System.out.println("Значение добавлено!");
- if(size==arr.length) //увеличение размера по надобности
- increase();
- }
- else System.out.println("Ошибка ввода! Неверные данные!");
- }
- public void erase(int pos) { //удаление элемента со сдвигом
- if((pos<size)&&(pos>=0)){
- for(int i=pos; i<size-1; i++) //перезапись элементов
- arr[i]=arr[i+1];
- size--;
- }
- else System.out.println("Ошибка ввода! Неверные данные!");
- }
- public void clear() { //очистка. Просто делаем размер нулевым, и данные буду перезаписывается незаметно для пользоавтеля
- size=0;
- }
- public Vector Clone() { //создает клон объекта
- Vector tmp=new Vector();
- for(int i=0; i<size; i++)
- tmp.insert(arr[i], i);
- return tmp;
- }
- public void print(){ //метод печати
- if(size==0)
- System.out.println("Массив пуст!");
- else {
- for(int i=0; i<size/*arr.length*/; i++)
- System.out.print(arr[i]+" ");
- System.out.println();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement