Şimdi Ara

C de bağlı liste

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
3
Cevap
0
Favori
447
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • C de tek veya çift yönlü bağlı liste kullanılarak hazırlanmış bi programa ihtiyacım var. Hastane otomasyonu gibi bir şey olabilir. Yardımcı olabilecek biri var mı ?



  • bence oturup kendin yazmaya çalış hem böylece listeleri tam anlamıyla öğrenmiş olursun. takıldığın yer olursa gel sor tekrar
  • elimde bu koddan başka bişey yok. benzetmeye çalışsamda bilmeyince olmuyor. o yüzden yardım istedik bizde.

    #include <stdio.h>
    #include <stdlib.h>
    #include <conio.h>
    #define tusaVur printf("devam icin H.H. tusuna basınız.\n"); getch();
    typedef struct topluluk{
    int bilgi;
    char mesaj[100];
    struct topluluk *on;
    struct topluluk *arka;
    }BLISTE2;
    BLISTE2 *ilk2=NULL ,*son2=NULL;

    int ekle(BLISTE2 *ki);
    int listele();
    int menuden_sec();
    void yazEkrana(BLISTE2 *yazilacak);
    int sakla();
    int yukle();
    BLISTE2 *arama(int);
    BLISTE2 *silme(int);
    BLISTE2 *okuKlavye();
    main(){
    BLISTE2 *eklenecek,*ki;
    int bilgi,sonuc;
    int secim;
    while(1){
    secim=menuden_sec();
    switch(secim){
    case 1:eklenecek=okuKlavye();
    if(eklenecek!=NULL)
    ekle(eklenecek);
    else
    puts("ekleme için bellek dolu\n");
    break;
    case 2:puts("Aranan");
    scanf("%d",&bilgi);
    ki=arama(bilgi);
    if(ki==NULL)
    puts("Aranan Bulunamadı");
    else
    yazEkrana(ki);
    break;
    case 3:sonuc=listele();
    if(sonuc==1)
    puts("Bos liste !");
    break;
    case 4: puts("Silinecek:"); scanf("%d",&bilgi);
    ki=silme(bilgi);
    if(ki!=NULL)
    puts("Silindi..");
    else
    puts("silinmek istenen yok");
    break;
    case 5:
    sakla();
    break;
    case 6:
    yukle();
    break;
    case 7:
    puts("Gorüsürüz\n"); getch();
    exit(0);
    }
    }
    }
    int ekle(BLISTE2 *ki){
    if(ilk2!=NULL){
    son2->arka=ki;
    ki->on=son2;
    son2=ki;
    son2->arka='\0';
    }
    else {
    ilk2=ki;
    son2=ki;
    ilk2->arka='\0';
    ilk2->on='\0';
    }
    return 0;
    }

    int listele(){
    BLISTE2 *p;
    p=ilk2;
    if(p==NULL) return -1;
    while(p!=NULL){
    yazEkrana(p);
    p=p->arka;
    tusaVur;
    }
    return 0;
    }

    BLISTE2 *arama(int aranan){
    BLISTE2 *p;
    p=ilk2;
    while(p)
    {
    if(aranan==p->bilgi)
    return p;
    p=p->arka;
    }
    return NULL;
    }
    BLISTE2 *silme(int silinen)
    {
    BLISTE2 *p;
    p=arama(silinen);
    if(p==NULL)
    return NULL;
    if(ilk2==p){
    if(ilk2->arka!=NULL){
    ilk2=p->arka;
    ilk2->on=NULL;
    }
    else{
    ilk2=NULL;
    son2=NULL;
    }
    }
    else {
    p->on->arka=p->arka;
    if(p==son2)
    son2=son2->on;
    else
    p->arka->on=p->on;
    }
    free(p);
    return p;
    }
    int sakla()
    {
    FILE *di;
    BLISTE2 *p;
    if((di=fopen("liste.txt","w"))==NULL){
    puts("Dosya Acilmadi...\n");
    return -1;
    }
    p=ilk2;
    puts("Sakliyorum...\n");
    while(p!=NULL){
    fwrite(p,sizeof(BLISTE2)-2*sizeof(p),1,di);
    p=p->arka;
    }
    fclose(di);
    return 0;
    }
    int yukle()
    {
    FILE *di;
    BLISTE2 *p;
    unsigned int n;
    int k,i;
    if((di=fopen("liste.txt","r"))==NULL){
    puts("Dosya Acilmadi...\n");
    return -1;
    }
    fseek(di,0,2);
    n=ftell(di)/(sizeof(BLISTE2)-2*sizeof(p));
    fseek(di,0,0);
    puts("Okuyorum ve ekliyorum...\n");
    for(k=0; k<n; k++){
    p=(BLISTE2 *)malloc(sizeof(BLISTE2));
    if(p==NULL){
    printf("Bellekte yer yok!\n");
    break;
    }
    fread(p,sizeof(BLISTE2)-2*sizeof(p),1,di);
    ekle(p);
    }
    fclose(di);
    return 0;
    }
    int menuden_sec()
    {
    int i;
    char *menu[7]={"[1]...EKLEME","[2]...ARAMA","[3]...LİSTELEME","[4]...SİLME","[5]...DOSYAYA SAKLA","[6]...DOSYADAN YUKLE","[7]...PROGRAMDAN CIK"};
    puts("\t*********MENU*********");
    for (i=0; i<7; i++)
    printf ("\t%s\n", menu);
    do {
    printf ("\tSECİMİNİZ : ");
    scanf (" 1d" , &i);
    }
    while (i<1 || i > 7);
    return i;
    }
    void yazEkrana(BLISTE2 *yazilacak){
    printf("bilgi:%d,mesaj:%s\n", yazilacak->bilgi, yazilacak->mesaj);
    }
    BLISTE2 *okuKlavye() {
    BLISTE2 *okunan;
    okunan= (BLISTE2*) malloc (sizeof (BLISTE2));
    //son kısım
    if(okunan=NULL)
    return NULL;
    puts("BİLGİ GİRİNİZ");
    scanf("%d",&(okunan->bilgi));
    puts("Mesaj Giriniz");
    scanf("%s",okunan->mesaj);
    return okunan;
    }



    < Bu mesaj bu kişi tarafından değiştirildi yasmennn -- 20 Mayıs 2014; 21:25:08 >




  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.