+ 1

top is not global variable so why peek is able to use it even without passing that .plz reply

#include<stdio.h> #include<stdlib.h> struct Node{ int data; struct Node * next; }; struct Node* top = NULL; void linkedListTraversal(struct Node *ptr) { while (ptr != NULL) { printf("Element: %d\n", ptr->data); ptr = ptr->next; } } int isEmpty(struct Node* top){ if (top==NULL){ return 1; } else{ return 0; } } int isFull(struct Node* top){ struct Node* p = (struct Node*)malloc(sizeof(struct Node)); if(p==NULL){ return 1; } else{ return 0; } } struct Node* push(struct Node* top, int x){ if(isFull(top)){ printf("Stack Overflow\n"); } else{ struct Node* n = (struct Node*) malloc(sizeof(struct Node)); n->data = x; n->next = top; top = n; return top; } } int pop(struct Node* tp){ if(isEmpty(tp)){ printf("Stack Underflow\n"); } else{ struct Node* n = tp; top = (tp)->next; int x = n->data; free(n); return x; } } int peek(int pos){ struct Node* ptr = top; for (int i = 0; (i < pos-1 && ptr!=NULL); i++) { ptr = ptr->next; } if(ptr!=NULL){ return ptr->data; } else{ return -1; } } int main(){ top = push(top, 28); top = push(top, 18); top = push(top, 15); top = push(top, 7); linkedListTraversal(top); for (int i = 1; i <= 4; i++) { printf("Value at position %d is : %d\n", i, peek(i)); } return 0; }

15th Dec 2020, 7:42 PM
Dershil Jadav
Dershil Jadav - avatar
1 Answer
+ 2
Isn't "top" global variable, as you declare it outside of all functions?
15th Dec 2020, 8:19 PM
Michal Doruch