Динамически растущий стек на массиве, исправить ошибки - C (СИ)
Формулировка задачи:
Есть код. В строках с номерами 22, 27 и 44 получаю ошибки. Помогите исправить ситуацию.
Ошибка: a value of type void* cannot be assigned to an entity of type T
#include <conio.h> #include <stdio.h> #include <stdlib.h> #include <malloc.h> /*Динамический растущий стек на массиве*/ typedef int T; typedef struct Stack_tag { T *data; size_t size; size_t top; } Stack_t; #define INIT_SIZE 10/ #define MULTIPLIER 2 #define STACK_OVERFLOW -100 #define STACK_UNDERFLOW -101 #define OUT_OF_MEMORY -102 Stack_t* createStack() { Stack_t *out = NULL; out = malloc(sizeof(Stack_t)); if (out == NULL) { exit(OUT_OF_MEMORY); } out->size = INIT_SIZE; out->data = malloc(out->size * sizeof(T)); if (out->data == NULL) { free(out); exit(OUT_OF_MEMORY); } out->top = 0; return out; } void deleteStack(Stack_t **stack) { free((*stack)->data); free(*stack); *stack = NULL; } void resize(Stack_t *stack) { stack->size *= MULTIPLIER; stack->data = realloc(stack->data, stack->size * sizeof(T)); if (stack->data == NULL) { exit(STACK_OVERFLOW); } } void push(Stack_t *stack, T value) { if (stack->top >= stack->size) { resize(stack); } stack->data[stack->top] = value; stack->top++; } T pop(Stack_t *stack) { if (stack->top == 0) { exit(STACK_UNDERFLOW); } stack->top--; return stack->data[stack->top]; } T peek(const Stack_t *stack) { if (stack->top <= 0) { exit(STACK_UNDERFLOW); } return stack->data[stack->top - 1]; } int main(){ int i; Stack_t *s = createStack(); for (i = 0; i < 300; i++) { push(s, i); } for (i = 0; i < 300; i++) { printf("%d ", peek(s)); printf("%d ", pop(s)); } deleteStack(&s); _getch(); _getch(); }
Решение задачи: «Динамически растущий стек на массиве, исправить ошибки»
textual
Листинг программы
out = (Stack_t*) malloc(sizeof(Stack_t));
Объяснение кода листинга программы
out
- это указатель на структуруStack_t
, которая будет представлять стек.Stack_t
- это структура данных, используемая для представления стека.malloc
- это функция, которая выделяет память под новую переменную типаStack_t
.sizeof(Stack_t)
- это выражение, которое вычисляет размер памяти, необходимый для хранения одной переменной типаStack_t
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д