Mam problem muszę przerobić poniższy kod tak, aby odpowiadał innemu zadaniu i nie ukrywam, że sprawia mi to nie lada problem.
Treść Zadania:
Utworzyć listę jednokierunkową ze struktur (char* napis, int liczba) z możliwością: dodawania, przeglądania i usuwania elementu o największej wartości.
A oto kod którym na obecną chwilę dysponuję:
#include <stdio.h>
#include<stdlib.h>
#include<string.h>
struct node
{
int data;
char napis;
struct node *next;
};
struct node *kolejka = NULL;
void wyswietl()
{
struct node *temp;
temp=kolejka;
printf("\n");
while(temp!=NULL)
{
printf("%d->",temp->data);
temp=temp->next;
}
printf("NULL\n");
}
void dodaj_na_poczatek(int x)
{
struct node *nowy;
nowy=(struct node *)malloc(sizeof *nowy);
nowy->data=x;
nowy->next=kolejka;
kolejka=nowy;
}
int get_min()
{
int pom;
struct node *tmp;
if(kolejka!=NULL)
{
tmp=kolejka;
pom=kolejka->data;
kolejka=kolejka->next;
free(tmp);
return pom;
}
else return -999;
}
void put(int x)
{
struct node *nowy,*tmp=kolejka;
if(kolejka==NULL||kolejka->data>x)dodaj_na_poczatek(x);
else
{
nowy=(struct node *)malloc(sizeof *nowy);
nowy->data=x;
while(tmp->next!=NULL&&tmp->next->data<x)
tmp=tmp->next;
nowy->next=tmp->next;
tmp->next=nowy;
}
}
int main()
{
int wybor,dana;
while(1)
{
printf("\n0 - koniec\n1 - wyswietl\n2 - put\n3 - get_min\n");
scanf("%d",&wybor);
switch(wybor)
{
case 1: wyswietl();break;
case 2: printf("\n Podaj wartosc do dodania ");
scanf("%d",&dana);
put(dana);
break;
case 3:printf("\nzdjeto=%d\n",get_min());
break;
case 0:return 0;
}
}
}