2016-08-05 10 views
0

im völlig neu in der Programmierung und ich habe eine Menge Fehler :)Stack in C, erwartete Ausdruck vor ‚int‘

im Versuch, meinen ersten Stapel so zu codieren und versuchen leer zu überprüfen:

#define SIZE 10 
    struct stack { 
     int myTop; 
     int items[SIZE]; 
    }; 
    int empty(int *s); 
int main() { 
    struct stack s; 
    s.items; 
    s.myTop; 
    int i; 
    int x; 
    for (i = 0 ; i < SIZE ; i ++) { 
     printf("enter you element"); 
     scanf("%d", &s.items[i]); 
    } 
    if (empty(int *s)) 
     printf("stack is empty"); 
    else 
     printf("stack is not empty"); 


    getchar(); 
    return 0; 
} 
int empty(int *s) { 
    if (s -> myTop == -1) 
     return 1; 
    else 
     return 0; 
} 
    enter code here 

und ich habe diese Fehler: in Zeile 24 erwarteten Ausdruck vor 'int', was ist mein Gott? und andere plz den neuen Mann helfen :)

+0

Zeile 24 scheint 'return 0;' – doctorlove

+1

Versuchen Sie s.items zu entfernen; s.myTop; von main() und 'Code hier eingeben'. – someuser

+0

Was sind die Anweisungen 's.items;' und 's.myTop;' soll das tun? –

Antwort

3

Diese Linie ist das Problem:

if (empty(*s)) 

ändern Sie es an:

if (empty(&s)) 

Auch Ihre Methode Prototyp falsch ist, sollte es sein:

int empty(struct stack *s) 

Sie können einen Strukturzeiger nicht an ein i übergeben Zeiger

Auch werden Sie nichts zuweisen hier:

s.items; // = ? 
s.myTop; // = ? 

nicht sicher, was Sie versuchen, aber Ihre vollständig übersetzbar Code (ohne Berücksichtigung von Warnungen) ist here.

+0

Danke, es hat funktioniert, –

+0

@wizardofoz - willkommen :) – Sadique