I am creating a stack using a linked list(I am only in the push part). I have declared my structure as 

```
struct LinkedStack {
    int data;
    struct LinkedStack* next;
};

```

I have 3 pointers to LinkedStack declared globally.

```
struct LinkedStack *first = NULL;
struct LinkedStack *previous = NULL;
struct LinkedStack *current = NULL;

```

In the `main()` I'v writen this 

```
int data = 0, choice = 0;
if(current == NULL) {
     printf("\nNo Memory Allocated");
}

printf("\n1. Push Data");
printf("\n2. Pop Data");
printf("\n3. Display The Stack");
printf("\n4. Exit");

scanf("%d", &choice);

switch(choice) {
    case 1:
        printf("Enter the data:: ");
        scanf("%d", &data);
        push(&current, data);
        break;
}

```

The push function I have written is this-

```
void push(struct LinkedStruct **s, int usrdata) {
    if(first == NULL) {
        first = *s;
    }  
    if(previous != NULL) {
        previous->next = *s;
    } 

    *s->data = usrdata;
    previous = *s;
    *s->next = NULL;
}

```

But this results into compilation failure. The errors are-

> 
> Request for member 'data' in something which isn't a structure or an
>  union  
> 
>  Request for member 'next' in something which isn't a structure or an
>  union
> 
> 
> 

and the line numbers of these errors are these lines:

```
  *s->data = usrdata;
  previous = *s;
  *s->next = NULL;

```

Could you tell me why is this happening?