Witam,
mam taki kod (fragment):

 
#include <stdlib.h>
#include <stdio.h>

typedef struct mode linked_list;

struct mode
{
    int value;
    int tablica[100];
    struct mode *next;
};

linked_list *init()
{
    return NULL;
}

linked_list *dodaj(linked_list **l,int table[], int wynik)
{
    if((*l)==NULL)
    {        
        struct mode *nowy=malloc(sizeof(struct mode));
        nowy->next=nowy;
        nowy->value=wynik;        
        for(int i=0; i<=100; i++)
        {
            nowy->tablica[i]=table[i];
        }
        (*l)=nowy;       
    }
    else
    {
        struct mode *nowy=malloc(sizeof(struct mode));
        nowy->next=(*l)->next;
        nowy->value=wynik;
        for(int i=0; i<=100; i++)
        {
            nowy->tablica[i]=table[i];
        }
        (*l)->next=nowy;
    }
    return (*l);
}

void wypisz(struct mode *l)
{
    struct mode *w=l;
    printf("Wypisywanie wartosci cyklu:");
    do
    {
        w=w->next;
        printf("%d \t", w->value);
    }
    while(w!=l);    
}

int main()
{
    linked_list *root;
    root = init();
    int table[100],
(wypelniam tablice czyms- to akurat dobrze dziala)
wynik=6;
root=dodaj(&root,table,wynik);
wypisz(root);

return 0;
}

Z tego co widze to blad wyskakuje w pętli do (funkcja wypisz).
Moim zdaniem wskaznik przy dodawaniu jest wporządku ustawiany i zwracany.
Jakieś sugestie czemu wypisz nie dziala?