Реализовать функцию помещения в стек, изъятия из стека, получение текущего количества элементов - C (СИ)
Формулировка задачи:
Доброго всем. Не могу написать прогу, на динамику вообще ничего не получается сделать. Просмотрел много литературы и все равно не разобрался. В теории понимаю как должно быть, в практике не могу описать. Частично может потому, что использую pelles (только он, поменять среду нельзя)... даже примитивы кидают ошибки, те что в VS все гуд
Условие:
Есть динамическая структура СТЕК связного хранения. Поля: фамилия, имя, отчество. Необходимо реализовать функцию помещения в стек, изъятия из стека, получение текущего кол-ва элементов Буду очень благодарен любой помощи.Решение задачи: «Реализовать функцию помещения в стек, изъятия из стека, получение текущего количества элементов»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
typedef struct node_t {
const char* surname;
const char* name;
const char* patronymic;
struct node_t* next;
} TStack;
//-----------------------------------------------------------------------------
TStack* Push(TStack** stack,
const char* surname,
const char* name,
const char* patronymic) {
TStack* node = malloc(sizeof(TStack));
node->surname = surname;
node->name = name;
node->patronymic = patronymic;
node->next = *stack;
*stack = node;
return *stack;
}
//-----------------------------------------------------------------------------
void Pop(TStack** stack) {
TStack* node = *stack;
*stack = node->next;
free(node);
}
//-----------------------------------------------------------------------------
void Clear(TStack** stack) {
while (*stack) {
Pop(stack);
}
}
//-----------------------------------------------------------------------------
size_t GetSize(const TStack* stack) {
size_t count = 0;
for (; stack; stack = stack->next) {
count++;
}
return count;
}
//-----------------------------------------------------------------------------
void Print(const TStack* stack) {
for (; stack; stack = stack->next) {
printf("%s %s %s\n", stack->surname, stack->name, stack->patronymic);
}
}
//-----------------------------------------------------------------------------
int main() {
TStack* stack = NULL;
Push(&stack, "Ivanov", "Ivan", "Ivanovich");
Push(&stack, "Petrov", "Petr", "Petrovich");
Push(&stack, "Pavlov", "Pavel", "Pavlovich");
Push(&stack, "------", "-----", "---------");
Pop(&stack);
Print(stack);
printf("size = %u\n", GetSize(stack));
Clear(&stack);
return 0;
}