Cześć.
Muszę zaimplementować listę jednokierunkową w C, jednak przy wyoływaniu funkcji PrintList, wyskakuje mi "Segmentation fault(core dumped". Wklejam kod i proszę o pomoc :(
#include <stdio.h>
#include <stdlib.h>
#include "zad2.h"
List *Start=NULL;
List* AddOnStart (List *Start, int data)
{
List *new_one;
new_one = ( List * ) malloc(sizeof(List));
new_one->data=data;
new_one->next = Start; //pare operacji w jednej funkcji
Start = new_one;
return new_one;
}
List* AddSomewhere (List *actual, int data)
{
List *new_one;
new_one = ( List*)malloc(sizeof(List));
new_one->data=data;
new_one->next=actual->next;
actual->next=new_one;
return new_one;
}
void RemoveFirstElement(List *Start)
{
List *new_one;
new_one=Start;
Start=new_one->next;
free(new_one);
}
void RemoveNextOne(List *before)
{
List *new_one;
new_one=before->next;
before->next=new_one->next;
free(new_one);
}
void PrintList (List *Start)
{
List *new_one;
new_one=Start;
if(new_one==NULL)
{
int f=2;
printf("%p %d\n", f, new_one);
printf("%d \n", new_one->data);
}
else
{
printf("%p", new_one->next);
}
}
int main (void)
{
int w=5;
int c=4;
int k=9;
AddOnStart(*&Start, k);
printf("%p \n", AddSomewhere(AddOnStart(*&Start, c), c));
AddOnStart(*&Start, c);
AddOnStart(*&Start, w);
AddSomewhere(AddOnStart(*&Start, k), w);
AddSomewhere(AddOnStart(*&Start, c), c);
PrintList(*&Start);
return 0;
}
Header:
#ifndef _LIST_H
#define _LIST_H
typedef struct List
{
int data;
struct List *next;
}List;
#endif