Mam problem z dodaniem opcji sortowania kubełkowego. Mianowicie chodzi o posortowanie studentów według numerów indeksów. Nie wiele wiem o programowaniu, przegrzebałem internet ale nigdzie nie mogę znaleźć rozwiązania. Czy ktoś ma jakiś pomysł jak dodać taką opcję? Oto kod:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct student
{
char imie[33];
char nazwisko[33];
int nr_indeksu;
struct student* next;
}student;
//zlicza dlugosc listy
int dlugosc_listy(student* lista)
{
int d=NULL;
student* wsk=lista;
while(wsk!=NULL){
d++;
wsk = wsk->next;
}
return d;
}
//dodaj nowy wezel do listy
void dodaj(student**lista, student* nowa)
{
while (*lista != NULL) lista = &((*lista)->next);
*lista = nowa;
nowa->next = NULL;
}
//dodaj osobe do listy
void dodaj_stud(student** lista)
{
student*nowa=(student*)malloc(sizeof(student));
printf("Podaj imie: ");
scanf("%s", nowa->imie);
printf("Podaj nazwisko: ");
scanf("%s", nowa->nazwisko);
printf("Podaj numer indeksu: ");
scanf("%d", &(nowa->nr_indeksu));
dodaj(lista, nowa);
}
//wypisuje liste
void wypisz_liste(student* lista)
{
student* wsk=lista;
if(lista==NULL)
printf("Lista jest pusta");
else
printf("Lista zawiera %d studentow:\n", dlugosc_listy(lista));
int a = 1;
while(wsk!=NULL)
{
printf("%d %s %s %d\n", a, wsk->imie, wsk->nazwisko, wsk->nr_indeksu);
wsk=wsk->next;
a++;
}
}
//sortowanie
void kubki(int array[], int n) {
int i, j;
int count[n];
for(i=0; i < n; i++) {
count[i] = 0;
}
for(i=0; i < n; i++) {
(count[array[i]])++;
}
for(i=0,j=0; i < n; i++) {
for(; count[i]>0; (count[i])--) {
array[j++] = i;
}
}
}
int main()
{
student* lista = NULL;
int option;
while(option != 0)
{
printf("\n\n MENU");
printf("\n\n\n 0 Wyjscie z programu");
printf("\n 1 Wpisz dane studenta");
printf("\n 2 Wyswietl cala liste");
printf("\n 3 Wyswietl liste po posortowaniu\n");
scanf("%d", &option);
switch(option)
{
case 1:
printf("DODAWANIE STUDENTA\n");
dodaj_stud(&lista);
break;
case 2:
printf("WYSWIETL CALA LISTE\n");
wypisz_liste(lista);
break;
case 3:
printf("WYSWIETL LISTE PO POSORTOWANIU\n");
break;
}
}
} ```