Napisany mam podstawowy program do listy dwukierunkowej. Mam zadanie usunąć niepotrzebne podprogramy i dopisać dodatkowy podprogram, który z listy dwykierunkowej usuwa wiadomość o podanym przez użytkownika numerze. Jeżeli nie ma takiej wiadomości, wyprowadza "Nie egzystuje taka wiadomość".
Niestety, tylko rozpoczęąłam programować, nie wiem, jak to zrobić. Czy mógłby ktoś pomóc?
Oto mój program:
#include <stdio.h>
#include "komentarze.h"
struct Element {
struct Element* nastepny;
struct Element* poprzedni;
Wiadomosc* wiadomosc;
};
typedef struct Element Element;
void Menu()
{
printf("--------------------\n");
printf("Chcac dodac element do listy wcisnij \t 1\n");
printf("Chcac wydrukowac liste wcisnij \t\t 2\n");
printf("Chcac skonczyc wcisnij \t\t\t Esc.\n");
printf("--------------------\n");
}
Element* Tworzenie()
{
Element* element = (Element*)malloc(sizeof(Element));
if (element == NULL) {
printf("Nie udalo sie przydzielic tyle pamieci!\n");
}
element->wiadomosc = PrzypadkowaWiadomosc();
element->nastepny = NULL;
element->poprzedni = NULL;
return element;
}
void Dodawanie(Element** poczatek, Element** koniec)
{
if (*poczatek == NULL && *koniec == NULL) {
*poczatek = Tworzenie();
*koniec = *poczatek;
}
else {
Element* nowy = Tworzenie();
(*koniec)->nastepny = nowy;
nowy->poprzedni = *koniec;
*koniec = nowy;
}
}
void DrukowanieListy(Element* lista)
{
printf("---------------------------\n");
int i = 1;
while (lista != NULL) {
printf("Numer wiadomosci w liscie: %d\n", i);
DrukowanieWiadomosci(lista->wiadomosc);
lista = lista->nastepny;
i++;
}
printf("---------------------------\n");
}
void UsuwanieListy(Element** poczatek)
{
Element* tymczasowy;
while (*poczatek != NULL) {
tymczasowy = *poczatek;
*poczatek = (*poczatek)->nastepny;
free(tymczasowy);
}
}
int main()
{
Element *poczatek = NULL, *koniec = NULL;
char x;
Menu();
while ((x = getchar())) {
switch (x) {
case '1':
Dodawanie(&poczatek, &koniec);
Menu();
break;
case '2':
DrukowanieListy(poczatek);
Menu();
break;
case '\n':
break;
case 27:
UsuwanieListy(&poczatek);
return 0;
default:
Menu();
}
}
return 0;
}