주차장 관리 - 엄 울 민 판 데이터 구조 실습 문제

9983 단어 개인 항목
* 문제 설명
* 주차 장 치 는 n 대의 차 를 주차 할 수 있 는 좁 고 긴 통로 이 며 한 개의 대문 만 출입 할 수 있 습 니 다.자동 차 는 주차장 안에서 도착 하 는 선착순 으로 한 번 에 북쪽에 서 남쪽 으로 주차 하고 만약 에 장 내 에 주차 가 꽉 찼 다 면 먼저 인도 에 주차 해 야 한다.
* 주차장 에서 차 가 나 오 면.인도 에 있 는 첫 번 째 차 에 그것 을 타고 들 었 다.주차장 안에서 차 가 나 오 려 고 할 때.그의 뒤에 있 는 차 는 그 를 위해 길 을 양보 해 야 한다.그리고 주차장 에 원래 순서대로 들 어가 비용 을 받는다.
parking.java

/**
* ***********CopyRight**************
*-------Powered by QianXunNet-----
*-----Version 1.00 2009-01-17-----
*----- Design BY NiChao -----
*=========description===========
*^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
*/

package yanweimin.Parking;
import java.util.Scanner;
import yanweimin.Parking.*;
import java.util.Scanner;
public class Park {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub

//
System.out.println("the parking money is 10 yuan per hour");
System.out.println("input a num for the maxsize of parking:");
Scanner in = new Scanner(System.in);
int maxsize = in.nextInt();
Queue biandao = new Queue();
StackArray main = new StackArray(maxsize," ");
StackArray fuzhu = new StackArray(maxsize, " ");
loop: while(true)
{
Scanner cin = new Scanner(System.in);
System.out.println(" :");
//====== =======
int time = cin.nextInt();
System.out.println("select === 1: 2. 3. ");

int select = cin.nextInt();
switch(select)
{
//
case 1 :
{
System.out.println("input the num of car");
int num = cin.nextInt();
Car mycar = new Car(time ,num);
int into = main.push(mycar);
if(into == -1)
{
biandao.addQueue(mycar);
}
break;

}
//
case 2 :
{
System.out.println("input the num of the car you want to out:");
int num = cin.nextInt();

while( main.stackvalue[main.p].num != num)
{
Car acar = main.stackvalue[main.p];
main.pop();
fuzhu.push(acar);
}
Car right_car = main.stackvalue[main.p];
main.pop();
int money = (time - right_car.time)*10;
System.out.println(" "+money);

while( fuzhu.p != -1)
{
Car acar = fuzhu.stackvalue[fuzhu.p];
fuzhu.pop();
main.push(acar);
}
if(biandao.rear != -1)
{
Car acar = biandao.queuevalue[0];
acar.time = time;
biandao.delQueue();
main.push(acar);
}
break;
}
case 3 :
{
break loop;
}
}
}
}
}


queue.class

package yanweimin.Parking;

//

import yanweimin.Parking.Car;
public class Queue {

/*
*
*/
// public void coutQueue()
// {
//
// if(this.rear == -1)
// System.out.println(" ");
// else
// {
// int j = 0;
// for(int i =0; i<=rear;i++,j++)
// {
// System.out.print(queuevalue[i]+" ");
// }
// System.out.println(" "+j+" ");
// }
// }

/*
*
* @param num
*/
public void addQueue(Car car)
{
//
if(this.rear == this.maxsize-1)
{
System.out.println(" ");
}
else
{
this.rear ++;
this.queuevalue[this.rear] = car;
System.out.println(" "+car.num+" ");
}
}

/*
*
* @return num
*/
public void delQueue()
{
if(this.rear == -1)
{
System.out.println(" ");
}
else
{
Car car = this.queuevalue[0];
int temp = 0;
while ( temp != this.rear )
{
this.queuevalue[temp] = this.queuevalue[temp +1];
temp ++;
}
this.rear --;
System.out.println(" "+car.num+" ");
}
}

public int maxsize = 20;
public Car[] queuevalue = new Car[maxsize];
public int rear = -1;


}


stackarray.class

package yanweimin.Parking;


import yanweimin.Parking.Car;
public class StackArray {


//
public StackArray(int maxsize,String name)
{
p = -1;
this.maxsize = maxsize;
stackvalue = new Car[maxsize];
this.name = name;
}




//
// public void print()
// {
//
// if(this.p==-1)
// System.out.println(" ");
// else
//{
// int i = this.p;
// while(i>=0)
// {
// System.out.println(this.stackvalue[p]);
// i--;
// }
// }

// } //print
//
// -1
// 1
public int push(Car value)
{
if(this.p == this.maxsize-1 )
{
System.out.println(name+" ");
return -1;
}
else
{
this.p++;
this.stackvalue[p] = value;
System.out.println(" "+value.num+" "+this.name);
return 1;
}

} //push


public int pop()
{
// int temp = -1;
if(this.p == -1)
{
System.out.println(" ");
return -1;
}

else
{
int temp;
temp = this.stackvalue[p].num;
System.out.println(" "+temp+" "+this.name);
this.p--;

return temp;
}
}




int p; //
int maxsize; //
Car[] stackvalue;
String name;
}


테스트 결과
--------------------------------------------
the parking money is 10 yuan per hour
input a num for the maxsize of parking:
2
현재 시간 을 입력 하 세 요:
5
select = = = 1: 도착 2. 떠 나 3. 종료 프로그램
1
input the num of car
1
자동차 번호판 이 1 로 주 차고 에 들 어 갔다.
현재 시간 을 입력 하 세 요:
10
select = = = 1: 도착 2. 떠 나 3. 종료 프로그램
1
input the num of car
2
자동차 번호판 이 2 로 메 인 차고 에 들 어 갔다.
현재 시간 을 입력 하 세 요:
15
select = = = 1: 도착 2. 떠 나 3. 종료 프로그램
2
input the num of the car you want to out:
1
차 번 호 는 2 출 주 차고 이다.
자동차 번호판 이 2 로 보조 차고 에 들 어 갔다.
차 번 호 는 1 번 주 차고 이다.
이 차 는 100 위안 을 지불해 야 한다
차 번 호 는 2 차 보조 차고 이다.
자동차 번호판 이 2 로 메 인 차고 에 들 어 갔다.
현재 시간 을 입력 하 세 요:
20
select = = = 1: 도착 2. 떠 나 3. 종료 프로그램
1
input the num of car
3
자동차 번호판 은 3 으로 메 인 차고 에 들 어 갔다.
현재 시간 을 입력 하 세 요:
25
select = = = 1: 도착 2. 떠 나 3. 종료 프로그램
1
input the num of car
4
차고
차 번호 가 4 인 데 인도 에 들 어 갔 어 요.
현재 시간 을 입력 하 세 요:
30
select = = = 1: 도착 2. 떠 나 3. 종료 프로그램
1
input the num of car
5
차고
차 번호 가 5 로 인도 에 들 어 섰 다.
현재 시간 을 입력 하 세 요:
35
select = = = 1: 도착 2. 떠 나 3. 종료 프로그램
2
input the num of the car you want to out:
2
차 번 호 는 3 출 주 차고 이다.
자동차 번호판 은 3 으로 보조 차고 에 들 어 갔다.
차 번 호 는 2 출 주 차고 이다.
이 차 는 반드시 250 위안 을 지불해 야 한다.
차 번 호 는 3 개의 보조 차고 이다.
자동차 번호판 은 3 으로 메 인 차고 에 들 어 갔다.
차 번호 가 4 번 인 데 요.
자동차 번호판 이 4 로 메 인 차고 에 들 어 갔다.
현재 시간 을 입력 하 세 요:
40
select = = = 1: 도착 2. 떠 나 3. 종료 프로그램
2
input the num of the car you want to out:
4
차 번 호 는 4 번 메 인 차고 이다.
이 차 는 반드시 50 위안 을 지불해 야 한다
차 번 호 는 5 번 인도 이다.
자동차 번호판 이 5 로 메 인 차고 에 들 어 갔다.
현재 시간 을 입력 하 세 요:
45
select = = = 1: 도착 2. 떠 나 3. 종료 프로그램
3

좋은 웹페이지 즐겨찾기