Поместить в первый стек положительные элементы, а во второй — отрицательные - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Здравствуйте, помогите решить задачу. Ввести с клавиатуры 12 чисел, поместив в первый стек положительные элементы, а во второй — отрицательные. Выведите стеки на экран.

Решение задачи: «Поместить в первый стек положительные элементы, а во второй — отрицательные»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
 
typedef struct _TNode {
    int value;
    struct _TNode* next;
}   TNode;
 
//-----------------------------------------------------------------------------
TNode* Push(TNode** stack, int value) {
    TNode* node = malloc(sizeof(TNode));
    node->value = value;
    node->next = *stack;
 
    *stack = node;
 
    return *stack;
}
//-----------------------------------------------------------------------------
void Print(const TNode* stack) {
    for (; stack; stack = stack->next) {
        printf("%d ", stack->value);
    }
    printf("\n");
}
//-----------------------------------------------------------------------------
 
int main() {
    TNode* a = NULL;
    TNode* b = NULL;
    unsigned i = 12;
    int value;
 
    while ((i--) && (scanf("%d", &value) == 1)) {
        if (0 < value) {
            Push(&b, value);
        }
        else {
            Push(&a, value);
        }
    }
 
    printf("a: "); Print(a);
    printf("b: "); Print(b);
 
    return 0;
}

Объяснение кода листинга программы

  1. Создается структура данных TNode, которая представляет узел стека. Узел содержит целочисленное значение и указатель на следующий узел.
  2. Определяются две функции: Push для добавления элемента в стек и Print для вывода содержимого стека.
  3. В функции main создаются два указателя: a и b, которые будут указывать на вершину соответствующих стеков. Инициализируются они значением NULL.
  4. Переменная i инициализируется значением 12. Она будет использоваться для контроля количества вводимых чисел.
  5. В цикле while с условием i > 0 происходит считывание числа с помощью функции scanf и добавление его в один из стеков в зависимости от его знака.
  6. После окончания цикла, происходит вывод содержимого обоих стеков с помощью функции Print.
  7. Программа завершается возвратом значения 0, что означает успешное выполнение.

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


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

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

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