I am trying to implement stack
in c. Here is what I have done-
#include <stdio.h>
#include <stdlib.h>
typedef struct stack
{
char * data;
struct stack * next;
}stack;
stack * top1;
void push(char* data,stack * top)
{
stack* temp;
temp = (stack*)malloc(sizeof(stack));
if (!temp)
return;
temp->data = data;
temp->next = top;
top = temp;
}
int isEmpty(stack * top)
{
if(top == NULL)
return 1;
return 0;
}
char* pop(stack * top)
{
stack* temp; char*data;
if (isEmpty(top) == 1)
return "FALSE";
temp = top;
data = top->data;
top = top->next;
free(temp);
return data;
}
void display(stack * top)
{ stack* temp = top;
while(temp!=NULL) {
printf("%s \n",temp->data);
temp = temp->next;
}
}
int main()
{
top1=(stack *)malloc (sizeof(stack));
push("aa",top1);
push("bb",top1);
push("cc",top1);
display(top1);
char* data;
data =pop(top1);
printf("Pop = %s\n",data );
data =pop(top1);
printf("Pop = %s\n",data );
display(top1);
}
But I am getting the following error-
(null)
Pop = (null)
*** Error in `./exe': double free or corruption (fasttop): 0x00000000025cc010 ***
Aborted (core dumped)
The code appears to be correct, yet it is giving the error.