mihaispr
Administrator
 Inregistrat: acum 17 ani
Postari: 2142
|
|
//Sa se elimine elementele pare>=14 care apar cel mult o data intr-o coada
#include<stdio.h> #include<conio.h> #include<alloc.h>
struct nod {int x; struct nod* next; }* prim,* ultim;
int n,i,x,opt,k;
int vida() {if ((prim==NULL)&&(ultim==NULL)) return 1; else return 0; }
void creare() {struct nod* aux;int v; prim=ultim=NULL; for(i=1;i<=n;i++) {aux= (struct nod* )malloc(sizeof(struct nod)); printf("valoarea nodului %d=",i); scanf("%d",&v); aux->x=v; if (i==1) prim=ultim=aux; else {ultim->next=aux; ultim=aux; } } }
void afisare() {struct nod* c; if (prim==ultim && prim==NULL) printf("\nCoada vida" ); else for(c=prim;c;c=c->next) printf("%d",c->x); }
void elimina() {struct nod* aux; if (vida()) printf("Coada este vida" ); else if(prim->x%2==0 && prim->x>=14) {aux=prim; prim=prim->next; if (prim==NULL) ultim=NULL; free(aux); } }
//functie care verifica daca cel putin 2 el.din coada sunt negative //se numara cate el.verifica conditia cu k
void verifica() {struct nod* c; k=0; while(c) {if(c->x%2==0 && c->x>=14) k=k+1; c=c->next; } if (k==1) printf("DA" ); else printf("NU" ); }
do { puts("" ); puts("1.Creare" ); puts("2.Afisare" ); puts("3.Eliminare" ); puts("4.Verificare" ); puts("4.Terminare" ); printf("Alegeti optiunea" ); scanf("%d",&opt); switch(opt) { case 1: printf("nr.de noduri este" );scanf("%d",&n); creare(); case 2: afisare();printf("nr.de elem este %d" );scanf("%d",&nrx);break; case 3: {printf("se elimina x=" );scanf("5d",&v); elimina();} case 4: {printf("El.pare>=14 care apar cel mult o data in coada sunt %d" ); verifica();break; } } } while (opt<=4); getch(); }
|
|