Çift bağlı listelerde silme işlemi



#include<stdio.h>
#include<stdlib.h>
struct node {
 
 int data;
 struct node *next;
 struct node *prev;
};
struct node *head;


void veriekle(){
 int veri;
 printf("bir sayi girin:");
 scanf("%d",&veri);
 if(head==NULL)
 {
  head=(struct node *)malloc(sizeof(struct node ));
  head->data=veri;
  head->prev=NULL;
  head->next=NULL;
 }
 else{
  struct node *temp=head;
  struct node *temp2=(struct node *)malloc(sizeof(struct node ));
  temp2->data=veri;
  while(temp->next!=NULL)
  temp=temp->next;
  temp->next=temp2;
  temp2->prev=temp;
  temp2->next=NULL;
  
 }
 
}
void listele()
{
 struct node *temp=head;
 while(temp!=NULL)
 {
  printf("\n%d",temp->data);
  temp=temp->next;
 }
}
void sil()
{  int sil;
 struct node *temp=head;
 struct node *son=head;
 while(son->next!=NULL)
  son=son->next;
printf("\nsileceginiz degeri giriniz:");
scanf("%d",&sil);
if(head->data==sil)
{
 head=head->next;
 head->prev=NULL;
 free(temp);
}
else
{
 if(son->data==sil)
  {
   son->prev->next=NULL;
   free(son);
  }
 else
 {
  
  while(temp->data!=sil)
   temp=temp->next;
   temp->prev->next=temp->next;
   temp->next->prev=temp->prev;
   free(temp);
 }
 
 
}
}
main()
{
 veriekle();
 veriekle();
 veriekle();
 veriekle();
 listele();
 sil();
 listele();
 
}
sonraki
« Prev Post
Önceki
Next Post »
Thanks for your comment