2015-02-09 2 views
1

В программе предполагается реализовать стек для хранения и извлечения указателей на структуру. Структура содержит одну int и две структурные переменные. Функция Push работает нормально, но когда я набираю указатель структуры и пытаюсь получить доступ к данным, в ней возникает ошибка выполнения.стек хранения указателей структуры в c

#include<stdio.h> 
#include<malloc.h> 
#define MAX 10 
struct node *arr[MAX]; 
int top=-1; 
struct node* pop(){ 
    if(top=-1) 
     return NULL; 
    else{ 
     return arr[top--]; 
    } 
} 
void push(struct node* d){ 
    if(top==MAX-1) 
     return; 
    else{ 
     arr[++top]=d; 
    } 
} 
int main(){ 
    struct node* t = (struct node*)malloc(sizeof(struct node)); 
    t->data=9; 
    push(t); 
    printf("%d",pop()->data); 
    return 0; 
} 
+0

Вам не хватает 'free'. Просто подумать о том, как вы продолжаете работать над этим. – crashmstr

+2

И в C не бросайте результат 'malloc'. –

+0

Какая ошибка вы получаете? – Dana

ответ

7
if(top = -1) 

должен быть

if(top == -1) 

С = вы назначаете -1 к top. Чтобы проверить равенство, используйте ==.

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