Составление случайных чисел - PullRequest
0 голосов
/ 20 апреля 2020

Я хотел сложить случайные числа и распечатать стопку. Я пытался написать код, но я могу t find where the problem is coming from Пожалуйста, скажите мне, что я сделал не так, большое спасибо


#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAX_STACK_SIZE 100

int main()
{
    typedef struct {
        int key;
    } element;

    int stack[MAX_STACK_SIZE];
    int top = -1;

    srand((unsigned int)time(NULL));
    int i;

    void push(element, int i);
    {
        if (top >= MAX_STACK_SIZE)
        return;
        for (i = 0; i <= 10; i++)
        {
            i = rand() % 10;
            stack[top++] = i;
        }
    }
    for (i=0; i<=10; i++)
        printf("%d", stack[i]);
        return 0;
}

1 Ответ

0 голосов
/ 20 апреля 2020

Существует много способов реализации стека. Что касается предоставленного вами кода и отсутствующей информации, что именно не работает (ошибка компилятора?), Я попытался перенести его на рабочий фрагмент кода:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAX_STACK_SIZE 100

typedef struct {
    int key;
} element;

element NULLKEY;

element stack[MAX_STACK_SIZE];
int top = -1;

void push(element el)
{
    if (top >= MAX_STACK_SIZE)
        return;  // Handle out of range

    stack[++top] = el;
}

element pop()
{
    if (top < 0)
        return NULLKEY; // Handle out of range

    element el = stack[top];
    top--;
    return el;
}

int main()
{
    srand((unsigned int)time(NULL));
    int i;

    element el;

    el.key = 5;
    push(el);

    el.key = 20;
    push(el);

    el.key = 10;
    push(el);

    for (i=0; i<=3; i++)
        printf(" %d ", stack[i].key);

    for (i=0; i<=3; i++)
        printf(" %d ", pop().key);
}
  • push(element) выдвигает новый элемент в стеке
  • pop() возвращает последний элемент и удаляет его из стека
  • с помощью stack[index], вы все равно можете выполнить его итерацию.
...