Использование структуры внутри структуры Stack. Что не так?

Я пытаюсь использовать структуру внутри структуры 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). Я работаю над алгоритмом лабиринта. Пытаюсь выяснить, как настроить этот стек структур/структур для создания упорядоченных пар для отправки и извлечения.

В вашем коде нет std::vector или std::pair, что вы хотите реорганизовать?

Yksisarvinen 18.05.2024 22:39

без использования вектора или пары - почему, это школьное задание? Не то чтобы мне вообще ясно, о чем вы спрашиваете

catnip 18.05.2024 22:48

Я не понимаю, о чем вы спрашиваете. Хотите, чтобы arr был массивом point вместо int?

Retired Ninja 18.05.2024 22:53

Я думал о том, чтобы сделать arr массивом точек, но он должен был бы иметь указатель на оба элемента.

John 18.05.2024 22:58

Хорошо, теперь это имеет для меня меньше смысла. пожать плечами

Retired Ninja 18.05.2024 23:02

«без использования вектора или пары» — означает ли это, что вы также не можете использовать std::stack? В любом случае, почему Point вложен внутри Stack? Вероятно, вместо этого его следует объявить снаружи. «Я думал о том, чтобы сделать arr массивом точек, но он должен был бы иметь указатель на оба элемента» - почему? Какова здесь истинная цель?

Remy Lebeau 18.05.2024 23:57
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
6
86
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Стек — это просто структура для хранения списка чего-либо. Это может быть что угодно.

Физически я могу сложить кучу тарелок. Или бумаги. Или книги. Или коробки, в каждой из которых лежит по два плюшевых мишки.

То же самое в коде. Каждый элемент в стеке может быть целым числом, строкой, студентом, сотрудником или... точкой. Следовательно, вы можете создать вещь:

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 ) );

Другие вопросы по теме