Я пытаюсь использовать структуру внутри структуры Stack. Структура Point хранит два члена, и я хочу знать, как реорганизовать этот код без использования vector или pair.
typedef struct {
// Array to store stack elements
int arr[MAX_SIZE];
// Index of the top element in the stack
int top;
struct Point {
int x;
int y;
} point;
} Stack;
Кто-нибудь знает, с чего начать?
Я пытаюсь создать набор пар со структурой (x, y). Я работаю над алгоритмом лабиринта. Пытаюсь выяснить, как настроить этот стек структур/структур для создания упорядоченных пар для отправки и извлечения.
без использования вектора или пары - почему, это школьное задание? Не то чтобы мне вообще ясно, о чем вы спрашиваете
Я не понимаю, о чем вы спрашиваете. Хотите, чтобы arr был массивом point вместо int?
Я думал о том, чтобы сделать arr массивом точек, но он должен был бы иметь указатель на оба элемента.
Хорошо, теперь это имеет для меня меньше смысла. пожать плечами
«без использования вектора или пары» — означает ли это, что вы также не можете использовать std::stack? В любом случае, почему Point вложен внутри Stack? Вероятно, вместо этого его следует объявить снаружи. «Я думал о том, чтобы сделать arr массивом точек, но он должен был бы иметь указатель на оба элемента» - почему? Какова здесь истинная цель?





Стек — это просто структура для хранения списка чего-либо. Это может быть что угодно.
Физически я могу сложить кучу тарелок. Или бумаги. Или книги. Или коробки, в каждой из которых лежит по два плюшевых мишки.
То же самое в коде. Каждый элемент в стеке может быть целым числом, строкой, студентом, сотрудником или... точкой. Следовательно, вы можете создать вещь:
typedef
struct Point
{
int x, y;
}
Point;
И вы можете создать стек, в котором будут храниться такие вещи:
typedef
struct Stack
{
Point arr[MAX_STACK_SIZE];
int top; // -1 for empty stack
}
Stack;
После этого легко создать/инициализировать стек:
void CreateStack( Stack * S )
{
S.top = -1;
}
И подтолкните точку:
void Push( Stack * S, Point p )
{
if (S.top + 1 < MAX_STACK_SIZE)
S.arr[++S.top] = p;
}
и т. д. Пользовательский код становится очень простым:
int main(void)
{
Stack my_stack;
CreateStack( &my_stack );
Point p = { 2, 3 };
Push( &my_stack, p );
...
P.S. Вы также можете создать функцию для создания точки:
Point CreatePoint( int x, int y )
{
Point p = { x, y };
return p;
}
И затем используйте его:
Push( &my_stack, CreatePoint( 5, 7 ) );
В вашем коде нет
std::vectorилиstd::pair, что вы хотите реорганизовать?