Динамически растущий стек на массиве, исправить ошибки - 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.