#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();
}