Arama butonu
Bu konudaki kullanıcılar: 1 misafir, 1 mobil kullanıcı
0
Cevap
380
Tıklama
0
Öne Çıkarma
Kuyruk(alfabetik sıaralama)
O
11 yıl
Er
Konu Sahibi

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.

#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 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.

Üye Ol Şimdi Değil



DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.