/* Elemendi kustutamine, mille infovälja väärtus on "arv" * Moodustatakse ahel arvudest * Kasutaja sisestab otsitava väärtuse * Programm otsib ja kui leiab väärtuse "arv", siis kustutab ahelast vastava elemendi. * See variant sobib siis, kui loogikaavaldisi täielikult arvutatakse. */ #include typedef struct element *viit; struct element { int info; viit next; }; main(){ viit head, node, curr, prev; int arv; head = NULL; printf("Sisesta arv! (Lõpetamiseks 0)"); scanf("%d",&arv); while (arv != 0){ node = malloc(sizeof *node);// Uus element node->next = head; // Elemnt kinnitatakse pea (head) külge node->info = arv; head = node; // Head tõstetakse edasi printf("Sisesta arv! (Lõpetamiseks 0)"); scanf("%d",&arv); } printf("Millist arvu otsime >"); scanf("%d",&arv); curr = head; prev = NULL; // Kui otsitav element on esimene, siis kustutatakse: if (curr->info==arv) { node = curr; head = curr->next; free(node); } // Otsime edasi else { while (curr->next!=NULL && curr->info!=arv) { prev = curr; curr = curr->next; } // Kui info-väljas on otsitav väärtus, siis tuleb element kustutada if (curr->info==arv) { node=curr; prev->next = curr->next; free(node); } // Otsitavat väärtust ei leitudki else { printf("Selline element puudub\n"); } } // Trükime lõpptulemuse välja printf("Peale kustutamist on ahel järgmine:\n"); curr = head; while (curr != NULL) { printf("%d\n", curr->info); curr = curr->next; } getch(); }