用Java语言解决两个问题(急!!!!)

来源:百度知道 编辑:UC知道 时间:2024/05/22 18:31:16
1.设计整数堆栈,使得栈具有以下特质:
特质:先进后出;当栈内存储的数据达到栈的最大容量时,将栈的容量在扩大1倍;
并完成以下功能:构造一个默认容量为16的堆栈;构造一个指定容量的堆栈;
判断栈是否为空;将一个整数压栈;将栈定元素弹出;返回栈中元素的个数。
2.设计直线类,它代表由两个点确定的一条直线。该直线类应可以完成以下功能:
返回直线的两个端点;求直线的长度;求直线的斜率;比较两条直线是否为同一条直线;给定点判断该点是否在某直线上;

第二道题有点意思,哈哈。
复习一下几何。。
Line
{
int x1,x2,y1,y2
double getLength ()
{
return Math.sqrt (Math.abs (x1 - x2) * Math.abs (x1 - x2) +
Math.abs (y1 - y2) * Math.abs (y1 - y2)) ;
}

double get斜率 ()
{
return ((double) Math.abs (y1 - y2))/
((double) Math.abs (x1 - x2)) ;
}

boolean isSameLine (Line l2)
{
return isPointInLine (l2.x1, l2.y1) && isPointInLine (l2.x2,l2.y2) ;
}

boolean isPointInLine (int x , int y)
{
return new Line (x,y, x1,y1).get斜率 () == new Line (x,y,x2,y2).get斜率() ;
}
}

这里的问题在于,计算斜率时,可能要约定一个精度,否则,isPointInLine的比较可能会失败。

直接使用Stack,人家都给你写好了,而且这个堆栈还是同步的,可以在多线程之间直接使用的。