Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

A simple stack implementation using C

Tags:

c

I had written a program in C to implement a simple stack. But I am getting segmentation fault in my program and finding it hard to find out what is wrong. Can any one help,

   #include<stdio.h>
   #include<stdlib.h>
   struct stack_structure{
     int stack_array[10];
     int stack_pointer;
   };
   void push_into_stack(struct stack_structure *,int);
   int main(){
     int no = 8;
     struct stack_structure *st;
     st->stack_pointer = -1;
     push_into_stack(st,no);
     return 0;
   }
   void push_into_stack(struct stack_structure *s,int no){
     s -> stack_pointer++;
     s -> stack_array[s -> stack_pointer] = no;
   }
like image 361
Bithin Avatar asked May 23 '26 14:05

Bithin


1 Answers

struct stack_structure *st;

This only creates a pointer to a struct stack_structure. It does not allocate memory for the struct stack_structure itself.

You can try with this:

struct stack_structure st;
st.stack_pointer = -1;
push_into_stack(&st,no);

The other option is to dynamically allocate (and free) that structure:

struct stack_structure *st = malloc(sizeof(struct stack_structure));
...
// when you're done with it
free(st);
like image 178
Mat Avatar answered May 25 '26 05:05

Mat



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!