wtorek, 22 września 2009

Implementacja listy dwukierunkowej cyklicznej C

#include 

#include 

struct listacykl

{

int key;

struct listacykl *next,*prev;

}*head=NULL,*element=NULL,*temp=NULL;



void dodaj(struct listacykl *&head,int x){

{

if(head==NULL)

{

head=(struct listacykl*)malloc(sizeof(struct listacykl));

head->key=x;

head->next=head;

head->prev=head;

}   else{

if(element==NULL)

{

element=(struct listacykl*)malloc(sizeof(struct listacykl));

element->key=x;

head->next=element;

element->prev=head;

element->next=head;

head->prev=element;

temp=element;

}

else{

element=(struct listacykl*)malloc(sizeof(struct listacykl));

element->key=x;

temp->next=element;

element->prev=temp;

element->next=head;

head->prev=element;

temp=element;

}

}

}

}



void show(struct listacykl *head)

{

struct listacykl *glowa;

glowa=head;



printf("%d  ",head->key);

head=head->next;

while(head!=glowa){

printf("%d  ",head->key);

head=head->next;

}

}                          



int main(){

int i,x,n;

printf("\n------------Lista dwukierunkowa cykliczna------------\n\n\n");

printf("Ile elementow ma zawierac lista n=  ");

scanf("%d",&n);

printf("Podawaj elementy \n");

for(i=1;i<=n;i++)
{
                     printf("element nr. %d =    ",i);
                     scanf("%d",&x);                     dodaj(head,x); 


printf("\n------------------------\n");
                   show(head);
   printf("\n------------------------\n");
   printf("\n\n");                   system("PAUSE"); 
}

Brak komentarzy:

Prześlij komentarz