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.