Стек для символов: при освобождении памяти — ошибка - 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().
- Если выбрано удаление символа, то из стека удаляется последний добавленный символ.
- Если выбрана проверка стека, то выводится текущее состояние стека.
- В конце программы, после завершения цикла, если в стеке остались символы, выводится сообщение об ошибке.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д