让我们想象一下我有一个像这样的结构数组:
struct car
{
int number_car;
int viezd_car = 0;
};
void main(){
setlocale(LC_ALL, "ru");
srand(time(0));
int N = rand()%(100-0+1)+0;
int park_mest = rand() % (20 - 0 + 1) + 0;
car *car1=new car[N+park_mest];`
我需要通过索引从中删除结构对象本身。如何最好地反映这样一个索引的空结构这一事实?
我相信我们需要以某种方式通过索引将已删除结构之后的所有结构向左移动,然后将此空闲结构添加到数组的末尾。但怎样才能正确地做到这一点呢?
完整代码:
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
struct car
{
int number_car;
int viezd_car = 0;
};
void main(){
setlocale(LC_ALL, "ru");
srand(time(0));
int N = rand()%(100-0+1)+0;
int park_mest = rand() % (20 - 0 + 1) + 0;
car *car1=new car[N+park_mest];
int variable;
do
{
cout << "Сейчас на парковке:" << N << " машин," << " доступно " << park_mest << " мест для стоянки." << endl;
cout << "Вы хотите выехать со стоянки или припарковать новую машину?" << endl;
cout << "1 - припарковать" << endl << "2 - выехать" <<endl<<"0 - выйти из стоянки"<< endl;
while (!(cin >> variable))
{
cout << "Введен неккоректный выбор варианта" << endl << endl;
cout << "Сейчас на парковке:" << N << " машин," << " доступно " << park_mest << " мест для стоянки." << endl;
cout << "Вы хотите выехать со стоянки или припарковать новую машину?" << endl;
cout << "1 - припарковать" << endl << "2 - выехать" << endl << "0 - выйти из стоянки" << endl;
cin.clear();
while (cin.peek() != '\n') cin.get();
}
if (variable!=1&& variable != 2 && variable != 0 )
{
cout << "Введен неккоректный выбор варианта" << endl << endl;
variable = 5;
}
switch (variable)
{
case 1: {
if (park_mest!=0)
{
car1[N + 1].number_car = N + 1;
cout << endl << "Вы припарковали машину, номер вашей машины: " << N + 1 << endl;
cout << endl << endl;
park_mest -= 1;
N += 1;
}
else
{
cout << "Доступные стоянки закончились, припарковаться не где :(" << endl<<endl;
}
break;
}
case 2: {
break;
}
case 0: {
cout << "Приезжайте еще! :)" << endl;
break;
}
}
} while (variable!=0);
delete []car1;
}
а чтобы выехать машине 5 нужно что 1234 ее пропустили и вернулись обратно对于这个任务(据我了解),两个堆栈是完美的。这符合“算法与数据结构”主题的本质
当被问及“X 车应该离开”时,将主堆栈的顶部移至附加堆栈,直到遇到
X。然后,要开回汽车,请执行相反的操作 - 将它们转移到主堆栈,直到辅助堆栈用完。您可以使用 STL 中现成的堆栈
std::stack,或者您可以根据向量(更简单)或数组自己制作它们,如果您想要的话。