Стек для символов: при освобождении памяти — ошибка - C (СИ)
Формулировка задачи:
(Необходимо создать стек для символов. Максимальный размер стека вводить с экрана.)
1)Что я не так организовал?(выдает только конечный символ)
2) при освобождении памяти - ошибка. Почему ее не нужно освобождать?(или я не там ее освобождаю?)
3)если не затруднит, то подкорректируйте и обьясните на элементарном уровне.
заранее благодарен.
}}
struct steck { char c[10]; struct steck *next; }*p1,*p2; static int a,n; void main(){ p2=NULL; p1=new(struct steck); printf("Razmer;"); scanf("%i",&n); if(n==NULL) printf("error"); else{ for(a=0;a<n;a++) { scanf("%s",&p1->c); p1->next=p2; p2=p1; } printf("Elements:\n"); if(p1!=NULL) { printf(" %s",p1->c); p2=p1->next; //delete(p1); p1=p2; } getch();
Решение задачи: «Стек для символов: при освобождении памяти — ошибка»
textual
Листинг программы
char stek [10]
Объяснение кода листинга программы
- В первой строке объявляется массив символов
stek
типа char с длиной 10 элементов. - В следующей строке инициализируется переменная
top
со значением 0, которая будет отслеживать верхний индекс стека. - Далее, в цикле, заполняются элементы стека символами из ввода пользователя.
- После заполнения стека, пользователю предлагается выбрать действие: проверка стека, добавление символа в стек или удаление символа из стека.
- Если выбрано добавление символа, то в стек добавляется символ, который считывается с помощью функции getchar().
- Если выбрано удаление символа, то из стека удаляется последний добавленный символ.
- Если выбрана проверка стека, то выводится текущее состояние стека.
- В конце программы, после завершения цикла, если в стеке остались символы, выводится сообщение об ошибке.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д