00001 00010 #include "stack.h" 00011 #include<stdio.h> 00012 #include<malloc.h> 00013 00017 struct node 00018 { 00019 int data; 00020 struct node *next; 00021 }; 00022 00023 00032 int push(Stack *s,int elt) 00033 { 00034 Node *newnode=(Node*)malloc(sizeof(Node*)); 00035 newnode->data=elt; 00036 newnode->next=s->stacktop; 00037 s->stacktop=newnode; 00038 return 1; 00039 } 00040 00048 int top(Stack *s) 00049 { 00050 if(s->stacktop==NULL) 00051 { 00052 return -1; 00053 } 00054 else 00055 { 00056 return s->stacktop->data; 00057 } 00058 } 00059 00067 int isempty(Stack *s) 00068 { 00069 if(s->stacktop==NULL) 00070 { 00071 return 1; 00072 } 00073 return 0; 00074 } 00075 00083 void initialize(Stack *s) 00084 { 00085 s->stacktop=NULL; 00086 } 00087 00095 int pop(Stack *s) 00096 { 00097 if(s->stacktop==NULL) 00098 { 00099 return -1; 00100 } 00101 Node *temp=s->stacktop; 00102 int data=s->stacktop->data; 00103 s->stacktop=s->stacktop->next; 00104 free(temp); 00105 return data; 00106 } 00107