[C] funkcja z argumentem "tablica wskaźników"

0

Witam, mam taki oto kod:

#include <stdio.h>

struct gracz
	{
	int asysty;
	int gole;
	};

void wczyt(struct gracz * tablica)
    {
	(*tablica).asysty = 6;
    }
	
int main()
    {
	struct gracz tab[10];
    wczyt(&tab[2]);
	printf("%d\n", tab[2].asysty);
	return 0;
    }

Robię to w ramach ćwiczeń i napotkałem się na problem. Chcę zapisać asysty dla każdego z 10 elementów tablicy tab. Nie chodzi mi tutaj o rozwiązanie z pętlą for w ciele main. Chciałbym by sama funkcja wczyt() to robiła, czyli w niej jakoś musiałoby być for. Próbuję tak:

#include <stdio.h>

struct gracz
	{
	int asysty;
	int gole;
	};

void wczyt(struct gracz * tablica)
    {
	int i;
	for (i=0; i<10; i++)
		{
		(*tablica)[i].asysty = 10;
		}
    }
	
int main()
    {
	struct gracz tab[10];
    wczyt(&tab[]);
	printf("%d\n", tab[2].asysty);
	return 0;
    }

Ale wczyt(&tab[]); zwraca mi błąd. Nie wiem co tu wpisać jako argument... proszę o pomoc.

0
#include <stdio.h>

struct gracz
        {
        int asysty;
        int gole;
        };

void wczyt(struct gracz * tablica)
    {
        int i;
        for (i=0; i<10; i++)
                {
                tablica[i].asysty = 10; //tablica[i] zamiast (*tablica)[i]
                }
    }

int main()
    {
        struct gracz tab[10];
    wczyt(tab); //jako argument podajesz po prostu tab, a nie &tab[]
        printf("%d\n", tab[2].asysty);
        return 0;
    }
0

Dzięki wielkie! Jakbym mógł jeszcze prosić o pomoc przy tym:
Mam taką funkcję

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

#define ROZMIAR_TABLICY 4

struct lista
	{
	float odleglosc;
	int numer1;
	int numer2;
	struct lista* dalej;
	};

typedef struct lista* Lista;

void przerzuc(float tablica[ROZMIAR_TABLICY][ROZMIAR_TABLICY], Lista* list)
	{
	int i,j;
	for(i=0; i<ROZMIAR_TABLICY; i++)
		{
		for(j=0; j<ROZMIAR_TABLICY; j++)
			{
			if (i != j && tablica[i][j] != -1)
				{
				Lista temp = (Lista) malloc(sizeof(struct lista));
				temp -> odleglosc = tablica[i][j];
				temp -> numer1 = i;
				temp -> numer2 = j;
				temp -> dalej = *list;
				*list = temp;
				}
			}
		}
	}

void wczytaj(float tablica[ROZMIAR_TABLICY][ROZMIAR_TABLICY])
	{
	int i,j;
	for(i=0; i<ROZMIAR_TABLICY; i++)
		{
		for(j=0; j<ROZMIAR_TABLICY; j++)
			{
			if (i != j)
				{
				printf("Podaj odleglosc od %d do %d: ", i,j);
				scanf("%f", &tablica[i][j]);
				}
			}
		}
	}
	
void druk(Lista lista)
	{
	while (lista != NULL) // dopoki nie natrafimy na wskaznik na null/nic
		{
		printf("odleglosc z %d do %d: %f\n", lista -> numer1, lista -> numer2, lista -> odleglosc);
		lista = lista -> dalej; // zapisujemy do lista wskaznik na nastepny element
		}
	}

int main()
	{
	float tablica[ROZMIAR_TABLICY][ROZMIAR_TABLICY];
	Lista lista = NULL;
	wczytaj(tablica);
	printf("\n");
	przerzuc(tablica, &lista);
	druk(lista);
	return 0;
	}

Działa on poprawnie, z tablicy tworzy mi się lista. Jedna lista. A chciałbym by tworzyły mi się cztery listy, dla każdego i oddzielna. I by były zapisane w tablicy. Nie za bardzo mi wychodzi.

Z góry dziękuję za pomoc ;]

0

Witam, teraz mam już taki kod (trochę więcej i ciekawiej).

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

#define ROZMIAR_TABLICY 4

struct lista
	{
	float odleglosc;
	int numer1;
	int numer2;
	struct lista* dalej;
	};

typedef struct lista* Lista;

// FUNKCJA PRZERZUCAJACA Z TABLICY NA LISTE (tablica, lista incydencji):
void PrzerzucTablicaLista(float tablica[ROZMIAR_TABLICY][ROZMIAR_TABLICY], Lista* list)
	{
	int i,j;
	for(i=0; i<ROZMIAR_TABLICY; i++)
		{
		for(j=0; j<ROZMIAR_TABLICY; j++)
			{
			// Jesli i == j nie ma sensu probowac wprowadzac wartosci, nie wprowadzamy rowniez jesli komorka tablicy 2D ma wartosc -1
			if (i != j && tablica[i][j] != -1)
				{
				Lista temp = (Lista) malloc(sizeof(struct lista)); // malloc rezerwuje miejsce w pamieci o rozmiarze struktury lista
				temp -> odleglosc = tablica[i][j];
				temp -> numer1 = i;
				temp -> numer2 = j;
				temp -> dalej = *list; // do dalej zapisujemy wskaznik na nastepny element
				*list = temp;
				}
			}
		}
	}

// FUNKCJA PRZERZUCAJACA Z LISTY NA TABLICE (lista incydencji, tablica):
void PrzerzucListaTablica(Lista lista, float (*tablica)[ROZMIAR_TABLICY]) 
	{
	// Deklarujemy tablice do sprawdzania czy jest zapisana odleglosc dla poszczegolnych komorek tablicy 2D
	int tab_spr[ROZMIAR_TABLICY][ROZMIAR_TABLICY];

	while (lista != NULL) // Dopoki nie natrafimy na wskaznik na NULL/nic
		{
		tablica[lista -> numer1][lista -> numer2] = lista -> odleglosc;
		tab_spr[lista -> numer1][lista -> numer2] = 1; // Jest zapisana odleglosc
		lista = lista -> dalej; // Zapisujemy do lista wskaznik na nastepny element
		}

	// Sprawdzamy czy dla poszczegolnych komorek tablicy 2D jest zapisana odleglosc, jesli nie, wstawiamy wartosc-1
	int i,j;	
	for(i=0; i<ROZMIAR_TABLICY; i++)
		{
		for(j=0; j<ROZMIAR_TABLICY; j++)
			{
			if (tab_spr[i][j] != 1)
				{
				tablica[i][j] = -1;
				}
			}
		}
	}

void wczytaj(float tablica[ROZMIAR_TABLICY][ROZMIAR_TABLICY])
	{
	int i,j;
	for(i=0; i<ROZMIAR_TABLICY; i++)
		{
		for(j=0; j<ROZMIAR_TABLICY; j++)
			{
			if (i != j)
				{
				printf("Podaj odleglosc od %d do %d: ", i,j);
				scanf("%f", &tablica[i][j]);
				}
			}
		}
	}

void drukListy(Lista lista)
	{
	while (lista != NULL) // dopoki nie natrafimy na wskaznik na null/nic
		{
		printf("odleglosc z %d do %d: %f\n", lista -> numer1, lista -> numer2, lista -> odleglosc);
		lista = lista -> dalej; // zapisujemy do lista wskaznik na nastepny element
		}
	}

void drukTablicy(float tablica[ROZMIAR_TABLICY][ROZMIAR_TABLICY])
	{
	int i,j;
	for (i=0; i<ROZMIAR_TABLICY; i++)
		{
		for (j=0; j<ROZMIAR_TABLICY; j++)
			{
			if (i != j)
				{
				printf("%6.2f", tablica[i][j]);
				}
			else
				{
				printf("   X  ");
				}
			}
		printf("\n");
		}
	}

int main()
	{
	float tablica[ROZMIAR_TABLICY][ROZMIAR_TABLICY]; // Tu beda dane wczytane z klawiatury
	float tablica2[ROZMIAR_TABLICY][ROZMIAR_TABLICY]; // Tu po przejsciu z tablicy na liste i z powrotem na tablice
	Lista lista = NULL;
	printf("PODAJ ODLEGOSCI (-1 gdy nie ma polaczenia):\n");
	wczytaj(tablica);
	PrzerzucTablicaLista(tablica, &lista);
	PrzerzucListaTablica(lista, tablica2);
	printf("\n\nLISTA:\n");
	drukListy(lista);
	printf("\n\nTABLICA:\n");
	drukTablicy(tablica2);
	return 0;
	}

Tylko nadal mam jedną listę zamiast tablicy list :/

0

na moje oko to masz po prostu wszędzie o 1 gwiazdkę za mało...
Funkcja która chce operować na jednej liście powinna dostawać jako argument lista* poczatek_listy (albo jak istnieje szansa ze będziesz ten początek modyfikował to nawet lista*& poczatek_listy). A funkcja która ma dostać tablicę takich list powinna dostać lista** tablica_list.

0

Ok, jadę dalej i mam tak:

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

#define ROZMIAR_TABLICY 4

struct lista
	{
	float odleglosc;
	int numer1;
	int numer2;
	struct lista* dalej;
	};

typedef struct lista* Lista;

// FUNKCJA PRZERZUCAJACA Z TABLICY NA LISTE (tablica, lista incydencji):
void PrzerzucTablicaLista(float tablica[ROZMIAR_TABLICY][ROZMIAR_TABLICY], Lista* list)
	{
	int i,j;
	for(i=0; i<ROZMIAR_TABLICY; i++)
		{
		for(j=0; j<ROZMIAR_TABLICY; j++)
			{
			// Jesli i == j nie ma sensu probowac wprowadzac wartosci, nie wprowadzamy rowniez jesli komorka tablicy 2D ma wartosc -1
			if (i != j && tablica[i][j] != -1)
				{
				Lista temp = (Lista) malloc(sizeof(struct lista)); // malloc rezerwuje miejsce w pamieci o rozmiarze struktury lista
				temp -> odleglosc = tablica[i][j];
				temp -> numer1 = i;
				temp -> numer2 = j;
				temp -> dalej = *list; // do dalej zapisujemy wskaznik na nastepny element
				*list = temp;
				}
			}
		}
	}

// FUNKCJA PRZERZUCAJACA Z LISTY NA TABLICE (lista incydencji, tablica):
void PrzerzucListaTablica(Lista lista, float (*tablica)[ROZMIAR_TABLICY]) 
	{
	// Deklarujemy tablice do sprawdzania czy jest zapisana odleglosc dla poszczegolnych komorek tablicy 2D
	int tab_spr[ROZMIAR_TABLICY][ROZMIAR_TABLICY];

	while (lista != NULL) // Dopoki nie natrafimy na wskaznik na NULL/nic
		{
		tablica[lista -> numer1][lista -> numer2] = lista -> odleglosc;
		tab_spr[lista -> numer1][lista -> numer2] = 1; // Jest zapisana odleglosc
		lista = lista -> dalej; // Zapisujemy do lista wskaznik na nastepny element
		}

	// Sprawdzamy czy dla poszczegolnych komorek tablicy 2D jest zapisana odleglosc, jesli nie, wstawiamy wartosc-1
	int i,j;	
	for(i=0; i<ROZMIAR_TABLICY; i++)
		{
		for(j=0; j<ROZMIAR_TABLICY; j++)
			{
			if (tab_spr[i][j] != 1)
				{
				tablica[i][j] = -1;
				}
			}
		}
	}

void wczytaj(float tablica[ROZMIAR_TABLICY][ROZMIAR_TABLICY])
	{
	int i,j;
	for(i=0; i<ROZMIAR_TABLICY; i++)
		{
		for(j=0; j<ROZMIAR_TABLICY; j++)
			{
			if (i != j)
				{
				printf("Podaj odleglosc od %d do %d: ", i,j);
				scanf("%f", &tablica[i][j]);
				}
			}
		}
	}

void drukListy(Lista lista[10000])
	{
	int i;
	for (i=0; i<ROZMIAR_TABLICY; i++)
		{
		printf("Lista dla %d", i);
		while (lista[i] != NULL) // dopoki nie natrafimy na wskaznik na null/nic
			{
			printf("odleglosc z %d do %d: %f\n", lista[i] -> numer1, lista[i] -> numer2, lista[i] -> odleglosc);
			lista[i] = lista[i] -> dalej; // zapisujemy do lista wskaznik na nastepny element
			}
		}
	}

void drukTablicy(float tablica[ROZMIAR_TABLICY][ROZMIAR_TABLICY])
	{
	int i,j;
	for (i=0; i<ROZMIAR_TABLICY; i++)
		{
		for (j=0; j<ROZMIAR_TABLICY; j++)
			{
			if (i != j)
				{
				printf("%6.2f", tablica[i][j]);
				}
			else
				{
				printf("   X  ");
				}
			}
		printf("\n");
		}
	}

int main()
	{
	float tablica[ROZMIAR_TABLICY][ROZMIAR_TABLICY] = {{-1,11,6,-1},{12,-1,-1,9},{-1,-1,-1,15},{-1,8,-1,-1}};
	// float tablica[ROZMIAR_TABLICY][ROZMIAR_TABLICY]; // Tu beda dane wczytane z klawiatury
	// float tablica2[ROZMIAR_TABLICY][ROZMIAR_TABLICY]; // Tu po przejsciu z tablicy na liste i z powrotem na tablice
	Lista tab[10000];
	// printf("PODAJ ODLEGOSCI (-1 gdy nie ma polaczenia):\n");
	// wczytaj(tablica);
	PrzerzucTablicaLista(tablica, &(*tab));
	// PrzerzucListaTablica(lista, tablica2);
	printf("\n\nLISTA:\n");
	drukListy(tab);
	printf("\n\nTABLICA:\n");
	// drukTablicy(tablica2);
	return 0;
	}

Nie wiem tylko jak zmodyfikować funkcję PrzerzucTablicaLista() by jak zmieni się i zapisywała już do nowej tablicy. Myślałem by dodać kwadratowe nawiasy:

				temp -> dalej = *list[i]; // do dalej zapisujemy wskaznik na nastepny element
				*list[i] = temp;

Wtedy dostaję błąd:

poltab.c: error: incompatible types in assignment
poltab.c: error: incompatible types in assignment

Więc dodaję do argumentu funkcji nawiasy kwadratowe:

void PrzerzucTablicaLista(float tablica[ROZMIAR_TABLICY][ROZMIAR_TABLICY], Lista* list[10000])

To z kolei daje błąd:

poltab.c: warning: passing arg 2 of PrzerzucTablicaLista' from incompatible pointer type`

I nie wiem jak modyfikować tą linijkę:

PrzerzucTablicaLista(tablica, &(*tab));

By to jednak działało... proszę o pomoc ;]

0

Ok, udało się. Teraz już tylko przerzucenie z listy na tablicę sprawia problem.

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

#define ROZMIAR_TABLICY 4
#define ROZMIAR_TABLICY2 10000

struct lista
	{
	float odleglosc;
	int numer;
	struct lista* dalej;
	};

typedef struct lista* Lista;

// FUNKCJA PRZERZUCAJACA Z TABLICY NA LISTE (tablica, lista incydencji):
void PrzerzucTablicaLista(float tablica[ROZMIAR_TABLICY][ROZMIAR_TABLICY], Lista (*list)[ROZMIAR_TABLICY])
	{
	int i,j;
	for(i=0; i<ROZMIAR_TABLICY; i++)
		{
		for(j=0; j<ROZMIAR_TABLICY; j++)
			{
			// Jesli i == j nie ma sensu probowac wprowadzac wartosci, nie wprowadzamy rowniez jesli komorka tablicy 2D ma wartosc -1
			if (i != j && tablica[i][j] != -1)
				{
				Lista temp = (Lista) malloc(sizeof(struct lista)); // malloc rezerwuje miejsce w pamieci o rozmiarze struktury lista
				temp -> odleglosc = tablica[i][j];
				temp -> numer = j;
				temp -> dalej = (*list)[i]; // do dalej zapisujemy wskaznik na nastepny element
				(*list)[i] = temp;
				}
			}
		}
	}

// FUNKCJA PRZERZUCAJACA Z LISTY NA TABLICE (lista incydencji, tablica):
void PrzerzucListaTablica(Lista lista[ROZMIAR_TABLICY2], float (*tablica)[ROZMIAR_TABLICY]) 
	{
	
	int i,j;
	for (i=0; i<ROZMIAR_TABLICY; i++)
		{
		for (j=0; j<ROZMIAR_TABLICY; j++) { tablica[i][j] = -1; }
		while (lista[i] != NULL) // Dopoki nie natrafimy na wskaznik na NULL/nic
			{
			tablica[i][lista[i] -> numer] = lista[i] -> odleglosc;
			tab_spr[i][lista[i] -> numer] = 1; // Jest zapisana odleglosc
			lista[i] = lista[i] -> dalej; // Zapisujemy do lista wskaznik na nastepny element
			}
		}
	
	}

void wczytaj(float tablica[ROZMIAR_TABLICY][ROZMIAR_TABLICY])
	{
	int i,j;
	for(i=0; i<ROZMIAR_TABLICY; i++)
		{
		for(j=0; j<ROZMIAR_TABLICY; j++)
			{
			if (i != j)
				{
				printf("Podaj odleglosc od %d do %d: ", i,j);
				scanf("%f", &tablica[i][j]);
				}
			}
		}
	}

void drukListy(Lista lista[ROZMIAR_TABLICY2])
	{
	int i;
	for (i=0; i<ROZMIAR_TABLICY; i++)
		{
		printf("Lista dla %d\n", i);
		while (lista[i] != NULL) // dopoki nie natrafimy na wskaznik na null/nic
			{
			printf("  odleglosc do %d: %f\n", lista[i] -> numer, lista[i] -> odleglosc);
			lista[i] = lista[i] -> dalej; // zapisujemy do lista wskaznik na nastepny element
			}
		}
	}

void drukTablicy(float tablica[ROZMIAR_TABLICY][ROZMIAR_TABLICY])
	{
	int i,j;
	for (i=0; i<ROZMIAR_TABLICY; i++)
		{
		for (j=0; j<ROZMIAR_TABLICY; j++)
			{
			if (i != j)
				{
				printf("%6.2f", tablica[i][j]);
				}
			else
				{
				printf("   X  ");
				}
			}
		printf("\n");
		}
	}

int main()
	{
	float tablica[ROZMIAR_TABLICY][ROZMIAR_TABLICY] = {{-1,11,6,-1},{12,-1,-1,9},{-1,-1,-1,15},{-1,8,-1,-1}}; // Tu beda dane wczytane z klawiatury
	float tablica2[ROZMIAR_TABLICY][ROZMIAR_TABLICY]; // Tu po przejsciu z tablicy na liste i z powrotem na tablice
	Lista tab[ROZMIAR_TABLICY2];
	printf("PODAJ ODLEGOSCI (-1 gdy nie ma polaczenia):\n");
	// wczytaj(tablica);
	PrzerzucTablicaLista(tablica, &tab);
	printf("\n\nLISTA:\n");
	drukListy(tab);
	PrzerzucListaTablica(tab, tablica2);
	
	printf("\n\nTABLICA:\n");
	drukTablicy(tablica2);
	return 0;
	}

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

#define ROZMIAR_TABLICY 4
#define ROZMIAR_TABLICY2 10000

struct lista
  {
    float odleglosc;
    int numer;
    struct lista* dalej;
  };

typedef struct lista* Lista;

// FUNKCJA PRZERZUCAJACA Z TABLICY NA LISTE (tablica, lista incydencji):
void PrzerzucTablicaLista(float tablica[ROZMIAR_TABLICY][ROZMIAR_TABLICY], Lista (*list)[ROZMIAR_TABLICY2])
{
  int i,j;
  for (i=0; i<ROZMIAR_TABLICY; i++)
    {
      for (j=0; j<ROZMIAR_TABLICY; j++)
        {
          // Jesli i == j nie ma sensu probowac wprowadzac wartosci, nie wprowadzamy rowniez jesli komorka tablicy 2D ma wartosc -1
          if (i != j && tablica[i][j] != -1)
            {
              Lista temp = (Lista) malloc(sizeof(struct lista)); // malloc rezerwuje miejsce w pamieci o rozmiarze struktury lista
              temp -> odleglosc = tablica[i][j];
              temp -> numer = j;
              temp -> dalej = (*list)[i]; // do dalej zapisujemy wskaznik na nastepny element
              (*list)[i] = temp;
            }
        }
    }
}

// FUNKCJA PRZERZUCAJACA Z LISTY NA TABLICE (lista incydencji, tablica):
void PrzerzucListaTablica(Lista lista[ROZMIAR_TABLICY2], float (*tablica)[ROZMIAR_TABLICY])
{
  int i,j;
  for (i=0; i<ROZMIAR_TABLICY; i++)
    {
      for (j=0; j<ROZMIAR_TABLICY; j++)
        {
          tablica[i][j] = -1;
        }
      while (lista[i] != NULL) // Dopoki nie natrafimy na wskaznik na NULL/nic
        {
          tablica[i][lista[i] -> numer] = lista[i] -> odleglosc;
          //tab_spr[i][lista[i] -> numer] = 1; // Jest zapisana odleglosc                     CO TO MA BYĆ?
          lista[i] = lista[i] -> dalej; // Zapisujemy do lista wskaznik na nastepny element
        }
    }
}

void wczytaj(float tablica[ROZMIAR_TABLICY][ROZMIAR_TABLICY])
{
  int i,j;
  for (i=0; i<ROZMIAR_TABLICY; i++)
    {
      for (j=0; j<ROZMIAR_TABLICY; j++)
        {
          if (i != j)
            {
              printf("Podaj odleglosc od %d do %d: ", i,j);
              scanf("%f", &tablica[i][j]);
            }
        }
    }
}

void drukListy(Lista lista[ROZMIAR_TABLICY2])
{
  int i;
  for (i=0; i<ROZMIAR_TABLICY; i++)
    {
      printf("Lista dla %d\n", i);
      while (lista[i] != NULL) // dopoki nie natrafimy na wskaznik na null/nic
        {
          printf("  odleglosc do %d: %f\n", lista[i] -> numer, lista[i] -> odleglosc);
          lista[i] = lista[i] -> dalej; // zapisujemy do lista wskaznik na nastepny element
        }
    }
}

void drukTablicy(float tablica[ROZMIAR_TABLICY][ROZMIAR_TABLICY])
{
  int i,j;
  for (i=0; i<ROZMIAR_TABLICY; i++)
    {
      for (j=0; j<ROZMIAR_TABLICY; j++)
        {
          if (i != j)
              printf("%6.2f", tablica[i][j]);
          else
              printf("   X  ");
        }
      printf("\n");
    }
}

int main()
{
  float tablica[ROZMIAR_TABLICY][ROZMIAR_TABLICY] = {{-1,11,6,-1},{12,-1,-1,9},{-1,-1,-1,15},{-1,8,-1,-1}}; // Tu beda dane wczytane z klawiatury
  float tablica2[ROZMIAR_TABLICY][ROZMIAR_TABLICY]; // Tu po przejsciu z tablicy na liste i z powrotem na tablice
  Lista tab[ROZMIAR_TABLICY2];
  printf("PODAJ ODLEGOSCI (-1 gdy nie ma polaczenia):\n");
  // wczytaj(tablica);
  PrzerzucTablicaLista(tablica, &tab);
  printf("\n\nLISTA:\n");
  drukListy(tab);
  PrzerzucListaTablica(tab, tablica2);

  printf("\n\nTABLICA:\n");
  drukTablicy(tablica2);
  return 0;
}

Zakomentowałem linię 50, bo nie mam pojęcia co to za magiczna tablica wzięta z kosmosu. Poza tym mieszasz sobie swoje #define i rozmiary się nie zgadzały.

0

Wszystko już wygląda ok. W zasadzie pozostał jeden mały problem.

int main()
	{
	float tablica[ROZMIAR_TABLICY][ROZMIAR_TABLICY] = {{-1,11,6,-1},{12,-1,-1,9},{-1,-1,-1,15},{-1,8,-1,-1}}; // Tu beda dane wczytane z klawiatury
	float tablica2[ROZMIAR_TABLICY][ROZMIAR_TABLICY]; // Tu po przejsciu z tablicy na liste i z powrotem na tablice
	Lista tab[ROZMIAR_TABLICY2];
	// printf("PODAJ ODLEGOSCI (-1 gdy nie ma polaczenia):\n");
	// wczytaj(tablica);
	PrzerzucTablicaLista(tablica, &tab);
	// printf("\n\nLISTA:\n");
	// drukListy(tab);
	PrzerzucListaTablica(tab, tablica2);
	printf("\n\nTABLICA:\n");
	drukTablicy(tablica2);
	return 0;
	}

Tak napisany program działa. Jeśli natomiast "odkomentuję" drukListy(tab); to już potem jest nie tak. W sumie chyba wiem z czego to wynika, wskaźnik przejeżdża na koniec i w funkcji PrzerzucListaTablica() już nie wchodzi w ogóle w pętle while(lista[i] != NULL). Masz może pomysł jak ten wskaźnik wrócić na początek?

1 użytkowników online, w tym zalogowanych: 0, gości: 1