Несоответствие типов переменных при создании символьного стека - C (СИ)
Формулировка задачи:
как задать правильно символьный стек,чтобы компилятор не ругался на меня?
#include <stdio.h>
#include <stdlib.h>
char *p; /* указатель на область свободной памяти */
char *tos; /* указатель на вершину стека */
char *bos; /* указатель на дно стека */
char stack[20];
/* Затолкать элемент в стек. */
int push(char i)
{
if(tos >= 20) {
printf("Стек переполнен\n");
return tos;
}
stack[tos] = i;
tos++;
}
/* Получить верхний элемент стека. */
char pop(void)
{
tos--;
if(tos < 0) {
printf("Стек пуст\n");
return 0;
}
return stack[tos];
}
int main(void) {
p = (char *) malloc(MAX*sizeof(char)); /* получить память для стека */
if(!p) {
printf("Ошибка при выделении памяти\n");
exit(1);
}
tos = p;
bos = p + MAX-1;
return 0;
}Решение задачи: «Несоответствие типов переменных при создании символьного стека»
textual
Листинг программы
% cc test.c Pushed a Pushed b Pushed c Pushed d Pushed e Pushed f Pushed g Pushed h Pushed i Pushed j Стек переполнен Poped j Poped i Poped h Poped g Poped f Poped e Poped d Poped c Poped b Poped a Стек пуст
Объяснение кода листинга программы
- Создание символьного стека.
- Ввод символов в стек.
- Переполнение стека.
- Извлечение символов из стека.
- Очистка стека.
- Проверка на пустой стек.
- Вывод сообщения об ошибке.
- Вывод сообщения о состоянии стека.
- Завершение работы программы.