:
----------------------------------------------------------------------------------------------------------------
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
typedef struct elem{int broj; struct elem *sled, *pret;}Elem;
typedef struct {Elem *prvi, *posl;} Lista;
void pisi_unapred (Lista lst){
Elem *tek;
for (tek=lst.prvi;tek;tek=tek->sled)
printf(" %d",tek->broj);
printf ("\n");}
void pisi_unazad (Lista lst){
Elem *tek;
for (tek=lst.posl; tek; tek=tek->pret)
printf(" %d",tek->broj);
printf ("\n");}
Elem *nadji_prvi (Lista lst, int b){
Elem *tek;
for (tek=lst.prvi; tek; tek=tek->sled)
if (tek->broj==b) return tek;
return NULL;}
Elem *nadji_posl (Lista lst,int b){
Elem *tek;
for (tek=lst.posl; tek; tek=tek->pret)
if(tek->broj==b) return tek;
return NULL;}
void na_pocetak (Lista *plst,int b){
Elem *novi= (Elem*) malloc (sizeof(Elem));
novi->broj=b;
novi->sled=plst->prvi;
novi->pret=NULL;
if (!plst->posl) plst->posl=novi;
else plst->prvi->pret=novi;
plst->prvi=novi;}
void na_kraj (Lista *plst, int b){
Elem *novi = (Elem*) malloc (sizeof (Elem));
novi->broj=b;
novi->pret=plst->posl;
novi->sled=NULL;
if (!plst->prvi) plst->prvi=novi;
else plst->posl->sled=novi;
plst->posl=novi;}
void brisi (Lista *plst){
Elem *tek = plst->prvi, *stari;
while (tek) {
stari = tek;
tek = tek->sled;
free (stari);}
plst->prvi = plst->posl = NULL;}
void izostavi_prvi (Lista *plst,int b){
Elem *tek = nadji_prvi (*plst,b);
if(tek){
if(! tek->pret) plst->prvi = tek->sled;
else tek->pret->sled = tek->sled;
if(! tek->sled) plst->posl = tek->pret;
else tek->sled->pret = tek->pret;
free (tek);}}
void izostavi_posl (Lista *plst, int b){
Elem *tek = nadji_posl (*plst,b);
if(tek){
if(! tek->pret) plst->prvi = tek->sled;
else tek->pret->sled = tek->sled;
if(! tek->sled) plst->posl = tek->pret;
else tek->sled->pret = tek->pret;
free (tek);}}
int main(int argc, char* argv[]){
Lista lst={NULL,NULL}; int kraj=0, izb, broj, n;
while (!kraj){
printf(
"1 - Dodavanje broja na pocetak liste\n"
"2 - Dodavanje broja na kraj liste\n"
"3 - Izostavljanje prvog pojavljivanja broja iz liste\n"
"4 - Izostavljanje poslednjeg pojavljivanja broja iz liste\n"
"5 - Brisanje svih elemenata liste\n"
"6 - Ispisivanje liste unapred\n"
"7 - Ispisivanje liste unazad\n"
"0 - Zavrsetak rada\n"
"Izbor? ");
scanf("%d",&izb);
switch (izb){
case 1:case 2:case 3:case 4:
printf("Broj? ");scanf("%d",&broj);
switch (izb){
case 1: na_pocetak (&lst,broj); break;
case 2: na_kraj (&lst, broj); break;
case 3: izostavi_prvi (&lst, broj); break;
case 4: izostavi_posl (&lst, broj); break;}break;
case 5: brisi (&lst); break;
case 6: printf("Lista=");pisi_unapred(lst); break;
case 7: printf("atsiL=");pisi_unazad(lst); break;
case 0: kraj=1; break;
default:printf ("GRESKA!\n"); break;}}}
----------------------------------------------------------------------------------------------------------------