Pagini recente » Monitorul de evaluare | Istoria paginii utilizator/alexandraiacobel | Diferente pentru utilizator/apocalypto intre reviziile 81 si 211 | Aparitii2 | Diferente pentru utilizator/apocalypto intre reviziile 204 si 205
Nu exista diferente intre titluri.
Diferente intre continut:
</html>
http://www.amazon.com/
http://www.amazon.com/
#include<stdio.h>
#include<stdlib.h>
typedef struct nod{
int* info;
struct nod* next;} nod;
typedef struct lista{
int lungime;
struct nod *inceput,*curent,*sfarsit;
}lista;
void create(lista* li)
{
// li=new li;
int n=sizeof(nod);
li->lungime=0;
li->inceput=(nod*) malloc(n);
li->inceput->info=NULL;
li->curent=NULL;
li->sfarsit=(nod*) malloc(sizeof(nod));
li->sfarsit->info=NULL;
li->sfarsit->next=NULL;
li->inceput->next=li->sfarsit;
}
void pb(lista* li,int x)
{
nod *p;
p=(nod*) malloc(sizeof(nod));
p->info=(int*) malloc(sizeof(int));
*(p->info)=x;
if(li->lungime==0) //lista goala
{
li->inceput->next=p;
p->next=li->sfarsit;
}
else
{
li->curent=li->inceput;
while(li->curent->next!=li->sfarsit)
{
li->curent=li->curent->next;
}
li->curent->next=p;
p->next=li->sfarsit;
}
li->lungime++;
}
void afisarea(lista *li)
{
if(li->lungime==0)
{
printf("lista este vida\n");
}
else
{
li->curent=li->inceput->next;
while(li->curent!=li->sfarsit)
{
printf("%d ",*(li->curent->info));
li->curent=li->curent->next;
}
printf("\n");
}
}
void pf(lista* li,int x)
{
nod* p;
p=(nod*) malloc(sizeof(nod));
p->info=(int*) malloc(sizeof(int));
*(p->info)=x;
if(li->lungime==0)
{
li->inceput->next=p;
p->next=li->sfarsit;
}
else
{
p->next=li->inceput->next;
li->inceput->next=p;
}
li->lungime++;
}
void pbk(lista *li,int x,int k)
{
nod* p;
p=(nod*) malloc(sizeof(nod));
p->info=(int*) malloc(sizeof(int));
*(p->info)=x;
li->curent=li->inceput->next;
while(li->curent!=li->sfarsit)
{
if(*(li->curent->info)==k)
{
break;
}
li->curent=li->curent->next;
}
if(li->curent!=li->sfarsit)
{
p->next=li->curent->next;
li->curent->next=p;
li->lungime++;
}
}
void pfk(lista *li,int x,int k)
{
nod* p;
p=(nod*) malloc(sizeof(nod));
p->info=(int*) malloc(sizeof(int));
*(p->info)=x;
li->curent=li->inceput;
while(li->curent->next!=li->sfarsit)
{
if(*(li->curent->next->info)==k)
{
break;
}
li->curent=li->curent->next;
}
if(li->curent->next!=li->sfarsit)
{
p->next=li->curent->next;
li->curent->next=p;
li->lungime++;
}
}
void popb(lista *li)
{
li->curent=li->inceput;
nod *q;
if(li->inceput->next!=li->sfarsit) {
while(li->curent->next!=li->sfarsit)
{
q=li->curent;
li->curent=li->curent->next;
}
q->next=li->curent->next;
li->lungime--;}
}
int main()
{
lista *li;
li=(lista *) malloc(sizeof(lista));
create(li);
//afisare(li);
//pf(li,x);
int co,x,k;
while(1){
scanf("%d",&co);
switch(co)
{
case 0: printf("lungimea este %d\n",li->lungime); break;
case 1: afisarea(li); break;
case 2: scanf("%d",&x); pb(li,x); break;
case 3: scanf("%d",&x); pf(li,x); break;
case 4: scanf("%d %d",&x,&k); pbk(li,x,k); break;
case 5: scanf("%d %d",&x,&k); pfk(li,x,k); break;
case 6: popb(li); break;
case 7: popf
default: printf("Nu exista comanda %d\n",co); break;
}
}
//pb(li,x);
//pfk(li,x,k);
//pbk(li,x,k);
//popf(li);
//popb(li);
//popk(li,k);
//empty(li);
return 0;
}
Nu exista diferente intre securitate.
Topicul de forum nu a fost schimbat.