Создание массива структур
У меня есть несколько заданий. Первое: создать структуру с несколькими полями. Вот она:
struct docEdit
{
char text[20];
int StrNum;
};
А вот второе я не очень понял. " Создать структуру (struct) Стек / Очередь, она будет включать в себя массив структур с данными и реализовать основные функции стека/очереди(pop,push,empty,size). ! реализовать стек / очередь на основе статического массива. Я не понимаю, что значит "она будет включать в себя массив структур с данными". Буду очень благодарен, если кто-то сможет объяснить или наведёт пример.
Ответы (2 шт):
Непонятно из того, что написано, но наверняка вам нужно что-то вроде этого
#include <iostream>
#include <queue>
using namespace std;
struct docEdit
{
char text[20];
int StrNum;
};
int main()
{
queue<docEdit*> myqueue;
docEdit first = new docEdit();
first->StrNum = 1;
myqueue.push(&first);
docEdit second = new docEdit();
first->StrNum = 2;
myqueue.push(&second);
while (!myqueue.empty()) {
cout << ' ' << myqueue.front()->StrNum;
delete myqueue.front();
myqueue.pop();
}
}
И то же самое для стека
Это значит, что Вам нужно создать ещё одну структуру, которая будет хранить в себе массив элементов типа docEdit. Ну и функции для работы с этой структурой. Вот заготовка для стека:
#include <stdio.h>
#define MAX_STACK_SIZE 64
#define TEXT_SIZE 20
struct docEdit
{
char text[TEXT_SIZE];
int StrNum;
};
struct Stack
{
docEdit items[MAX_STACK_SIZE];
int top; // Индекс свободной вершины стека
};
// Функция инициализации стека
void StackInit(struct Stack* st);
// Функция добавления элемента в стек
void StackPush(struct Stack* st, struct docEdit de);
// Функция извлечения из стека
void StackPop(struct Stack* st);
// Функция проверки на пустоту стека
int StackIsEmpty(struct Stack* st);
// Функция проверки на максимальную заполненность стека
int StackIsFull(struct Stack* st);
// Функция, которая возвращает количество элементов в стеке
int StackSize(struct Stack* st);
// Функция, которая возвращает указатель на элемент вершины стека для доступа к нему
docEdit* StackTop(struct Stack* st);
Реализацию функций оставляю на Вас:)