首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >堆栈结构数组

堆栈结构数组
EN

Stack Overflow用户
提问于 2017-11-14 09:41:50
回答 1查看 156关注 0票数 0

我正在试图弄清楚我们如何在这个机器问题中将一组结构实现到堆栈中。以下是问题所在:

制作一个允许用户通过数组方法执行以下活动的程序。停车场站提供10条停车场车道,每条车道可容纳5辆车。

a.入场。它必须能够登记新车和指定一个可用的停车车道。登记需要车牌号码、品牌名称、汽车颜色、车主和电话号码。

b.释放。它必须能够将汽车从指定的车道上释放出来。

c.搜查。它必须能够根据车牌号码识别汽车的位置。

d.空缺。它必须能够显示可用的停车位。

据我所知,我必须创建一个包含各种数据类型的二维结构数组,并且我必须利用它生成一个lifo代码。但我的问题是,我知道如何用一个数据类型来模拟数组方法lifo代码,而不是使用多个数据类型。我必须将结构的二维数组实现到堆栈中的部分是我陷入困境和困惑的地方。我在网上搜索过,寻找类似我的问题,但我找不到任何。我试图做一个代码如下所示:

代码语言:javascript
运行
复制
struct Car
{
    string brand, color, owner;
    int plate, phone;
};

class Stack
{
private:
    Car * pointer = new Car[10][5];
    int top;
public:
    Stack() // Constructor
    {...}

    void Push(int plate, string brand, string color, string color, string owner, int number)
    {...}

    Pop()
    {...}

}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-14 10:24:15

在选择实际的实现解决方案(如2-dim数组)之前,尝试进一步分析您的问题。

在您的任务中,您有以下抽象实体:

  • 具有属性的CarParkStationNumberOfParkLanes,它应该能够执行如下操作:FindFreeLaneFindCar(plateNum)RegisterACar(car)ReleaseACar(car)
  • 具有属性的LaneNumberOfPlaces,以及动作如:IsFull(),还有:FindACar(plateNum)AddACar(car)RemoveACar(car)
  • 具有属性的CarPlateNumberBrandColorOwner,这些属性应该能够执行:GetPlateNumber(),并且可能还提供对其他参数的访问。

下面是可能的CarParkStation类声明的一个非常普遍的示例:

代码语言:javascript
运行
复制
class CarParkStation
{
public:
    CarParkStation() = delete;
    explicit CarParkStation(int numParkLanes);
    ~CarParkStation() = default;

    std::shared_ptr<const Lane> FindFreeLane();
    std::shared_ptr<const Car> FindCar(const PlateNumber& pNumber);
    std::pair<std::shared_ptr<const Lane>, int position> FindWhereMyCarIsParked(const PlateNumber& pNumber);
    bool RegisterACar(const Car& car);
    bool ReleaseACar(const Car& car);

private:
    std::vector<std::shared_ptr<const Lane> > lanes_;
    std::set<std::shared_ptr<Car>, CustomCompareFunction > cars_;
};

不要忘记在实现的同时编写测试。这将帮助您验证您的需求和总体设计。例如:

代码语言:javascript
运行
复制
TEST_F(CarParkStationShould, returnCorrectFreeLane)
{
    ASSERT_EQ(expectedFreeLane, carParkStation->FindFreeLane());
}

一般来说,首先关注应用程序应该做什么,然后考虑如何实现它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47282301

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档