Я пытаюсь написать программу, которая находит все выражение ")"
в выражении и помещает их в связанный список, всегда добавляя в начале списка. Проблема в том, что когда я пытаюсь поместить новый элемент в список, программа перестает работать.не удалось вставить элемент в соответствующий список
с образцом пользовательского ввода 865)987
:
#include <stdio.h>
#include <stdlib.h>
typedef struct element {
char data;
struct element *next;
} ELEMENT;
int main(void)
{
ELEMENT *first = NULL;
ELEMENT *new_a;
char input[30];
int x=0;
printf("Input expression: ");
scanf("%s", &input);
while(input[x]!='\0'){
if (input[x]==')'){
printf("%c", input[x]); //This works just fine.
new_a->data = input[x]; //Here, the program stops working.
new_a->next = first;
first = new_a;
}
x++;
}
}
Что я делаю не так?
Спасибо большое, теперь, кажется, работает!Просто небольшая проблема: в строке есть новое предупреждение: «first = &new_a;», «назначение из несовместимого типа указателя». Вы случайно не знаете, почему это так? – DerekT
@DerekT ** Либо ** выделить в стеке с помощью 'ELEMENT new_a;' ** (обратите внимание на отсутствие звездочки!) ** и использовать 'first = &new_a;' ** или ** выделить в бесплатном хранилище с ' malloc' и используйте 'first = new_a;'. Или что-то еще? Если ваша проблема не устранена, * добавьте сообщение об ошибке *, пожалуйста. – Downvoter