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