Kategoriler
En Yeni
Popüler

C Dilinde Bağlı Listelerde İşlemler

C dilinde struct ile oluşturulan bağlı listeler ve bu listelerde yapılan işlemleri içeren örnek bir koddur. Bu kodda listeye sıralı olarak eleman ekleme,listeden istenilen elemanı çıkartma ve listeyi yazdırma gibi işlemler gerçekleştirilebiliyor. Bu tarz listeler bize büyük avantajlar sağlamaktadır. Hem kendi veri tipimizi oluşturmamızı hemde bunu birbirleriyle ilişkilendirmemizi sağladığından bu konunun kavranılması programlama açısından önemlidir.

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

struct ogrenci {
       int onum;
       float not;
       struct ogrenci *sonraki;
       };

       typedef struct ogrenci Ogrenci;
       typedef struct ogrenci *ogrenciadres;

       void listele (ogrenciadres liste)
       {

            while(liste->sonraki!=NULL){
                         printf("\nOgrenci No: %d Ogrenci Notu: %f \n",liste->sonraki->onum,liste->sonraki->not);
                         liste=liste->sonraki;

                         }
            }

       void sil(ogrenciadres liste)
       {
            ogrenciadres mevcutadres;
            ogrenciadres onceki;
            mevcutadres=liste;

            printf("Silinecek Ogrencinin No'sunu Girin:");
            int xno;
            scanf("%d",&xno);

            while(mevcutadres->onum!=xno && mevcutadres -> sonraki !=NULL)
            {                            onceki=mevcutadres;
                                         mevcutadres=mevcutadres->sonraki;
                                         }
            if(mevcutadres==liste)
            {
            liste=mevcutadres->sonraki;
            free(mevcutadres);
            }
            else if (mevcutadres -> onum == xno)
                 {
                 onceki->sonraki=mevcutadres->sonraki;
                 free(mevcutadres);
                 }
            else if (mevcutadres -> sonraki == NULL)
            {
             puts ("Silinecek Oge Bulunamadı"); 
                 }

       }

       void siraliekle (ogrenciadres hedefliste)
       {
            ogrenciadres mevcutadres;
            ogrenciadres yeni;
            ogrenciadres onceki;

            mevcutadres=hedefliste;

            printf("Ogr. No ve Notunu Giriniz :");
            int xno; float xnot;
            scanf ("%d %f", &xno,&xnot);

            while(mevcutadres->not <= xnot && mevcutadres ->sonraki != NULL)
            {
             onceki=mevcutadres;
             mevcutadres=mevcutadres->sonraki;
             }

             if (mevcutadres -> sonraki == NULL && mevcutadres->not <= xnot) {
                                 yeni=malloc(sizeof(Ogrenci));
                                 mevcutadres ->sonraki =yeni;
                                 yeni -> sonraki =NULL;
                                 yeni->onum=xno;
                                 yeni->not=xnot;
                                 }

             else
             {
                            yeni=malloc(sizeof(Ogrenci));
                            onceki -> sonraki =yeni;
                            yeni -> sonraki = mevcutadres;
                            yeni->onum=xno;
                            yeni->not=xnot;

                            }

                                 puts ("Basariyla Eklendi...");
                            }

       main()
       {
             ogrenciadres bmb;

             bmb=malloc(sizeof(Ogrenci));
             bmb->sonraki=NULL;
             int a=0;
             int tercih;

             while(a==0)
             {
             printf ("\n Ekleme icin - 1 - \n Cikarmak icin - 2 - \n Listelemek icin - 3 - \n ");

             scanf ("%d",&tercih);

             switch (tercih)
             {
                    case 1: {siraliekle(bmb); break;}

                    case 2: {sil(bmb); break;}

                    case 3: {listele(bmb); break;}

                    }   

               }

       }

 

Discussion — Cevap Yok

Bir Cevap Yazın