2016-05-01 2 views
0
typedef struct node { 
    double value; 
    struct node *prev; 
} node_t; 

В главной:первый узел стека невыплаты - с

if(fgets(str, MAX_LENGTH, stdin)) { 
    char *token; 
    token = strtok(str, " "); 
    while(token != NULL) { 
     if(strtod(token, NULL) != 0) { //Issue here 
      push(&stack, new_node(strtod(token, NULL))); 
     } 
...... 

Для тестового примера, если мой вход «1 2», то первый раз, когда я толкать узел в стек, node_t. prev = NULL (по желанию), а значение равно 1 (по желанию). Мой второй раз через цикл, первый узел в стеке по умолчанию (prev = NULL и value = 0). Это происходит в выражении if (см. Комментарий выше).

Почему мой первый узел по умолчанию?

+0

Почему это помечено как C++? –

ответ

0

При использовании strtod() в цикле, вы должны «получить первый маркер отдельно», попробуйте это ...

token = strtod(token, " ");//get first token and do some test cases with it... 
    while(token != NULL) { 
    if(strtod(token, NULL) != 0) { 
     push(&stack, new_node(strtod(token, NULL))); 
    } 

Попробуйте это, мы надеемся, это работает, и это был ваш вопрос ..

+0

token - строка - token = strtod (токен, "") дает ошибку из-за несовместимых типов –

+0

@ Koverman47 Извините, что это был пример ... это первое, что вы читаете в ... – LearningCODE

Смежные вопросы