Реализовать функцию помещения в стек, изъятия из стека, получение текущего количества элементов - 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;
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 3.875 из 5
Похожие ответы