I have a problem where my malloc breaks my program. Removing it will make it work but I need it furter on. Can someone please explain what i'm doing wrong. Thanks in advance!!
I have this function in my graph.c
bool graph_initialise(graph_t *graph, unsigned vertex_count)
    {
      assert(graph != NULL);
        graph = (struct graph_s*) malloc(sizeof(struct graph_s));
        if (graph == NULL){return true;}
        graph->vertex_count = vertex_count;
        graph->adjacency_lists = (struct adjacency_list_s*) malloc(vertex_count * sizeof(struct adjacency_list_s));
        if (graph->adjacency_lists == NULL){
        return true;
        }
        int i;
        for (i = 1; i < vertex_count; ++i){
        graph->adjacency_lists[i].first = NULL;
        }
      return false;
and this in my graph.h
typedef struct edge_s
{
  /* Points to the next edge when this edge is part of a linked list. */
  struct edge_s *next;
  unsigned tail;    /* The tail of this edge. */
  unsigned head;    /* The head of this edge. */
  unsigned weight;  /* The weight of this edge. */
} edge_t;
typedef struct adjacency_list_s
{
  edge_t *first; /* Pointer to the first element of the adjacency list */
} adjacency_list_t;
/* Type representing a graph */
typedef struct graph_s
{
  unsigned vertex_count; /* Number of vertices in this graph. */
  unsigned edge_count;   /* Number of edges in this graph. */
  /* Pointer to the first element of an array of adjacency lists. The array
   * is indexed by vertex number
   */
  adjacency_list_t *adjacency_lists;
} graph_t;
 
    