#include <stdio.h>
#include <stdlib.h>
// struktura dla listy jednokierunkowej
struct ListaInt {
int liczba;
struct ListaInt* next;
} Lista;
int main() {
struct ListaInt *head, *nowy, *tmp = NULL;
int liczba, i, deleted = 0;
// tworzenie głowy
head->liczba = liczba;
head->next = NULL;
tmp = head;
// tworzenie ogona
for (i = 0; i<3; i++){
// tworzenie miejsca w pamieci dla obiektu
// wpisywanie wartosci w pola struktury
nowy->liczba = liczba;
nowy->next = NULL;
// tmp wskazuje na "jeden wczesniej" dzieki temu poprzedni element listy moze wskazywac na juz istniejacy element
tmp->next = nowy;
tmp = nowy;
}
//tworzenie nowej glowy
// tworzenie miejsca w pamieci dla obiektu
// wpisywanie wartosci w pola struktury
nowy->liczba = liczba;
// wskazujemy na stara glowe
nowy->next = head;
head = nowy;
// usuwanie elementu o konkretnej liczbie
printf("Podaj liczbe do skasowania: "); // aby przeszukac liste należy wskaźnik tmp ustawić na pierwszy element
tmp = head;
// usowanie glowy
if (head->liczba == liczba)
{
head = head->next;
deleted = 1;
}
//w przeciwnym razie przeszukujemy liste
//tworze pomocniczy element do kasowania
struct ListaInt *aktualny = NULL, *poprzedni = NULL;
while (!deleted&&tmp->next != NULL){
if (tmp->next->liczba == liczba)
{
aktualny = tmp -> next;
tmp->next = tmp -> next -> next;
deleted = 1;
}
poprzedni = tmp;
tmp = tmp->next;
}
if (!deleted&&tmp->liczba == liczba)
{
poprzedni->next = NULL;
}
// aby wyswietlic listę należy wskaźnik tmp ustawić na pierwszy element
tmp = head;
do{
printf("liczba to: %d\n", tmp
->liczba
); tmp = tmp->next;
} while (tmp != NULL);
// ewentualnie mozna for
tmp = head;
/*for (i = 0; i<5; i++){
printf("liczba to: %d\n", tmp->liczba);
tmp = tmp->next;
} */
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCi8vIHN0cnVrdHVyYSBkbGEgbGlzdHkgamVkbm9raWVydW5rb3dlagpzdHJ1Y3QgTGlzdGFJbnQgewoJaW50IGxpY3piYTsKCXN0cnVjdCBMaXN0YUludCogbmV4dDsKfSBMaXN0YTsKCmludCBtYWluKCkgewoJc3RydWN0IExpc3RhSW50ICpoZWFkLCAqbm93eSwgKnRtcCA9IE5VTEw7CgoJaW50IGxpY3piYSwgaSwgZGVsZXRlZCA9IDA7CglwcmludGYoIlBvZGFqIGxpY3piZTogIik7CglzY2FuZigiJWQiLCAmbGljemJhKTsKCS8vIHR3b3J6ZW5pZSBnxYJvd3kKCWhlYWQgPSBtYWxsb2Moc2l6ZW9mKExpc3RhKSk7CgloZWFkLT5saWN6YmEgPSBsaWN6YmE7CgloZWFkLT5uZXh0ID0gTlVMTDsKCXRtcCA9IGhlYWQ7CgoJLy8gdHdvcnplbmllIG9nb25hCglmb3IgKGkgPSAwOyBpPDM7IGkrKyl7CgkJcHJpbnRmKCJQb2RhaiBsaWN6YmU6ICIpOwoJCXNjYW5mKCIlZCIsICZsaWN6YmEpOwoJCS8vIHR3b3J6ZW5pZSBtaWVqc2NhIHcgcGFtaWVjaSBkbGEgb2JpZWt0dQoJCW5vd3kgPSBtYWxsb2Moc2l6ZW9mKExpc3RhKSk7CgkJLy8gd3Bpc3l3YW5pZSB3YXJ0b3NjaSB3IHBvbGEgc3RydWt0dXJ5CgkJbm93eS0+bGljemJhID0gbGljemJhOwoJCW5vd3ktPm5leHQgPSBOVUxMOwoJCS8vIHRtcCB3c2thenVqZSBuYSAiamVkZW4gd2N6ZXNuaWVqIiBkemlla2kgdGVtdSBwb3ByemVkbmkgZWxlbWVudCBsaXN0eSBtb3plIHdza2F6eXdhYyBuYSBqdXogaXN0bmllamFjeSBlbGVtZW50CgkJdG1wLT5uZXh0ID0gbm93eTsKCQl0bXAgPSBub3d5OwoJfQoKCS8vdHdvcnplbmllIG5vd2VqIGdsb3d5CglwcmludGYoIlBvZGFqIGxpY3piZTogIik7CglzY2FuZigiJWQiLCAmbGljemJhKTsKCS8vIHR3b3J6ZW5pZSBtaWVqc2NhIHcgcGFtaWVjaSBkbGEgb2JpZWt0dQoJbm93eSA9IG1hbGxvYyhzaXplb2YoTGlzdGEpKTsKCS8vIHdwaXN5d2FuaWUgd2FydG9zY2kgdyBwb2xhIHN0cnVrdHVyeQoJbm93eS0+bGljemJhID0gbGljemJhOwoJLy8gd3NrYXp1amVteSBuYSBzdGFyYSBnbG93ZQoJbm93eS0+bmV4dCA9IGhlYWQ7CgloZWFkID0gbm93eTsKCgkvLyB1c3V3YW5pZSBlbGVtZW50dSBvIGtvbmtyZXRuZWogbGljemJpZQoJcHJpbnRmKCJQb2RhaiBsaWN6YmUgZG8gc2thc293YW5pYTogIik7CglzY2FuZigiJWQiLCAmbGljemJhKTsKCS8vIGFieSBwcnplc3p1a2FjIGxpc3RlIG5hbGXFvHkgd3NrYcW6bmlrIHRtcCB1c3Rhd2nEhyBuYSBwaWVyd3N6eSBlbGVtZW50Cgl0bXAgPSBoZWFkOwoJLy8gdXNvd2FuaWUgZ2xvd3kKCWlmIChoZWFkLT5saWN6YmEgPT0gbGljemJhKQoJewoJCWhlYWQgPSBoZWFkLT5uZXh0OwoJCWZyZWUodG1wKTsKCQlkZWxldGVkID0gMTsKCX0KCS8vdyBwcnplY2l3bnltIHJhemllIHByemVzenVrdWplbXkgbGlzdGUKCS8vdHdvcnplIHBvbW9jbmljenkgZWxlbWVudCBkbyBrYXNvd2FuaWEKCXN0cnVjdCBMaXN0YUludCAqYWt0dWFsbnkgPSBOVUxMLCAqcG9wcnplZG5pID0gTlVMTDsKCXdoaWxlICghZGVsZXRlZCYmdG1wLT5uZXh0ICE9IE5VTEwpewoJCWlmICh0bXAtPm5leHQtPmxpY3piYSA9PSBsaWN6YmEpCgkJewoJCQlha3R1YWxueSA9IHRtcCAtPiBuZXh0OwoJCQl0bXAtPm5leHQgPSB0bXAgLT4gbmV4dCAtPiBuZXh0OwoJCQlmcmVlKGFrdHVhbG55KTsKCQkJZGVsZXRlZCA9IDE7CgkJfQoJCXBvcHJ6ZWRuaSA9IHRtcDsKCQl0bXAgPSB0bXAtPm5leHQ7Cgl9IAoJaWYgKCFkZWxldGVkJiZ0bXAtPmxpY3piYSA9PSBsaWN6YmEpCgl7CgkJcG9wcnplZG5pLT5uZXh0ID0gTlVMTDsKCQlmcmVlKHRtcCk7Cgl9CgoKCgkvLyBhYnkgd3lzd2lldGxpYyBsaXN0xJkgbmFsZcW8eSB3c2thxbpuaWsgdG1wIHVzdGF3acSHIG5hIHBpZXJ3c3p5IGVsZW1lbnQKCXRtcCA9IGhlYWQ7Cglkb3sKCQlwcmludGYoImxpY3piYSB0bzogJWRcbiIsIHRtcC0+bGljemJhKTsKCQl0bXAgPSB0bXAtPm5leHQ7Cgl9IHdoaWxlICh0bXAgIT0gTlVMTCk7CgoJLy8gZXdlbnR1YWxuaWUgbW96bmEgZm9yCgl0bXAgPSBoZWFkOwoJLypmb3IgKGkgPSAwOyBpPDU7IGkrKyl7CgkJcHJpbnRmKCJsaWN6YmEgdG86ICVkXG4iLCB0bXAtPmxpY3piYSk7CgkJdG1wID0gdG1wLT5uZXh0OwoJfSAqLwoJc3lzdGVtKCJwYXVzZSIpOwoJcmV0dXJuIDA7Cn0K