Merhaba arkadaşlar dünden beri uğraşıp işin içinden çıkamıyorum bir türlü.Sorum şu Kayıt eklerken soyad öncelikli yani alfabetik bir sırayla(küçükten büyüğe) soyadları ekleyecek.Silerken de öncelikli olanı silinecek.Bu C de çift bağlı liste ile olacak.Strcmp komutu kullanayım dedim işin içinden çıkamadım.
/*Queue is empty or item to be added has priority more than first element*/ if( isEmpty() || soyad < onceki->oncelik ) { gecici->link=onceki; onceki=gecici; } else { p = onceki; while( p->link!=NULL && p->link->oncelik<=soyad ) p=p->link; gecici->link=p->link; p->link=gecici; } }/*End of insert()*/
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<string.h>
typedef struct Liste{
char numara[10];
char ad[20];
char soyad[20];
char bilgi;
char oncelik;
struct Liste *link;
}Liste;
Liste *onceki=NULL;
void Ekle(char ad, char soyad);
char sil();
void Listele();
char isEmpty();
main()
{
int choice;
char ad,soyad;
while(1)
{
printf("1.Ekle\n");
printf("2.Sil\n");
printf("3.Listele\n");
printf("4.Cikis\n");
printf("Secim yapiniz : ");
scanf("%d", &choice);
switch(choice)
{
case 1:
printf("İsim giriniz : ");
scanf("%s",&ad);
printf("Soyadı giriniz : ");
scanf("%s",&soyad);
Ekle(ad, soyad);
break;
case 2:
printf("Silinen isim %s\n",sil());
break;
case 3:
Listele();
break;
case 4:
exit(1);
default :
printf("Yanlis secim\n");
}/*End of switch*/
}/*End of while*/
}/*End of main()*/
void Ekle(char ad,char soyad)
{
struct Liste *gecici,*p;
gecici=(struct Liste *)malloc(sizeof(struct Liste));
if(gecici==NULL)
{
printf("Bellek bos\n");
return;
}
gecici->bilgi=ad;
gecici->oncelik=soyad;
/*Queue is empty or item to be added has priority more than first element*/
if( isEmpty() || soyad < onceki->oncelik )
{
gecici->link=onceki;
onceki=gecici;
}
else
{
p = onceki;
while( p->link!=NULL && p->link->oncelik<=soyad )
p=p->link;
gecici->link=p->link;
p->link=gecici;
}
}/*End of insert()*/
char sil()
{
struct Liste *gecici;
char ad;
if( isEmpty() )
{
printf("Kuyruk Dolu\n");
exit(1);
}
else
{
gecici=onceki;
ad=gecici->bilgi;
onceki=onceki->link;
free(gecici);
}
return ad;
}/*End of del()*/
char isEmpty()
{
if( onceki == NULL )
return 1;
else
return 0;
}/*End of isEmpty()*/
void Listele()
{
struct Liste *ptr;
ptr=onceki;
if( isEmpty() )
printf("Kuyruk boş\n");
else
{ printf("Kuyruk:\n");
printf("Soyad Ad\n");
while(ptr!=NULL)
{
printf("\n%s %s\n",ptr->oncelik,ptr->bilgi);
ptr=ptr->link;
}
}
}/*End of display() */
< Resime gitmek için tıklayın >
DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.
Üye Ol Şimdi DeğilÜye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.