C/C++ ile Tek Yönlü Bağlı Liste İşlemleri (Linked List)

C/C++  ile Tek Yönlü Bağlı Liste İşlemleri (Linked List)

Bu derste bağlı liste oluşturma, başa, sona ve araya eleman ekleme ve bu yerlerden silme işlemlerini yapan kodu paylaşmak istiyorum.

Bu derste bağlı liste oluşturma, başa, sona ve araya eleman ekleme ve bu yerlerden silme işlemlerini yapan kodu paylaşmak istiyorum.

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>

struct node
{
    int data;
    struct node *next;
}*head,*var,*trav;

void insert_at_begining(int value)
{
     var=(struct node *)malloc(sizeof (struct node));
     var->data=value;
     if(head==NULL)
     {
         
         head=var;
         head->next=NULL;
    }
    else
    {
        var->next=head;
        head=var;
    }    
         
     
}

void insert_at_end(int value)
{
      struct node *temp; 
      temp=head;
      var=(struct node *)malloc(sizeof (struct node));
      var->data=value;
     
      if(head==NULL)
      {
          head=var;
          head->next=NULL;
      }
        else
        {
            while(temp->next!=NULL)
            {
                temp=temp->next;
            }
        }
     
    }

void insert_at_middle(int value, int loc)
{
     struct node *var2,*temp;
     var=(struct node *)malloc(sizeof (struct node));
     var->data=value;
     temp=head;
    
    if(head==NULL)
    {
        head=var;
        head->next=NULL;
    }
      else
      {
          while(temp->data!=loc && temp->next!=NULL)
          {
              temp=temp->next;
          }
         var2=temp->next;
         temp->next=var;
         var->next=var2;
      
      }
      
}

int delete_from_middle(int value)
{
     struct node *temp,*var;
     temp=head;
     if(head==NULL)
     {
         printf("Liste Bos ");
         return 0;
    }
      while(temp!=NULL)
      {
          if(temp->data==value)
          {
              if(temp==head)
              {
                  head=temp->next;
                  free(temp);
                  return 0;
              }
          else
          {
              var->next=temp->next;
              free(temp);
              return 0;
              }
          }
         else{
             var=temp;
             temp=temp->next;
             
         }
      }

}

int delete_from_end()
{
     struct node *temp;
     temp=head;
     while(temp->next!=NULL)
     {
         var=temp;
         temp=temp->next;
     }
     if(temp==head)
     {
         head=temp->next;
         free(temp);
         return 0;
         }
      printf("listenin son elemani silindi:%d",temp->data);
      var->next=NULL;
      free(temp);
      return 0;
      }

void display()
{
    //listenin güncel durumunu ekrana yazar
     trav=head;
     if(trav==NULL)
     {
          printf("nListe Bos");
     }
     else
     {
          printf("nListenin Elemanlari: ");
          while(trav!=NULL)
          {
               printf(" -> %d ",trav->data);
               trav=trav->next;
          }
      printf("n");
      }
}

int main()
{
     int i=0;
     head=NULL;
     
     printf("1- Listenin Basina Ekleme");
     printf("n2- Listenin Sonuna Ekleme");
     printf("n3- Araya Eleman Ekleme");
     printf("n4- Listenin Sonundan Elemen Silme");
     printf("n5- Listeden İstenen Elemani Silme");
     printf("n6- CIKISn");
     while(1)
     {
           printf("nislem yapmak icin Secim Yapiniz");
           scanf("%d",&i);
           switch(i)
           {
                case 1:
                {
                     int value;
                     printf("nEklenecek Elemani Giriniz");
                     scanf("%d",&value);
                     insert_at_begining(value);
                     display();                
                     break; 
                }
                case 2:
                {  
                    int value;
                    printf("nEklenecek Elemani Giriniz");
                    scanf("%d",&value);
                    insert_at_end(value);
                    display();
                    break;
                }
                case 3:
                {
                    int value,loc;
                    printf("nHangi Elemandan sonra Ekleme Yapmak istiyorsunuz?");
                    scanf("%d",&loc);
                    printf("nEklenecek Elemani Giriniz");
                    scanf("%d",&value);
                    insert_at_middle(value,loc);
                    display();
                    break;
                }
                case 4:
                {
                    delete_from_end();
                    display();
                    break;
                }
                case 5:
                {
                    int value;
                    display();
                    printf("nHangi Elemani silmek istiyorsunuz");
                    scanf("%d",&value);
                    delete_from_middle(value);
                    display();
                    break;
                }
                case 6:
                {
                        exit(0);
                }
           }
      }
getch();
}

 

Yorum Yaz

Yorum yazabilmek için üye girişi yapmanız gerekiyor!

Yukarı Git