C.QueueExample1 History
Hide minor edits - Show changes to markup
September 03, 2005, at 05:35 PM
by �zg�n
Added lines 1-105:
Baglantili liste yontemiyle basit bir kuyruk �rnegi.
(:code lang=c:)
/**
* Program: queue-2005.05.20.c
* Versiyon: 0.1
* Aciklama: Baglantili liste ile az kontrollu kuyruk tasarimi.
* Kaynaklar:
* 1- Veri Yapilari ve Algoritmalar, Rifat Colkesen
* 2- C How to Program, Deitel
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// Kuyruktaki dugumlerin veritipi.
typedef struct node {
int data;
struct node *rearPtr;
} NODE;
// Kuyrugun basini ve sonunu isaret edecek ilkPtr ve sonPtr isaretcisi.
NODE *ilkPtr = NULL, *sonPtr = NULL;
/**
* Gelen eleman kuyrugun sonuna eklenir yani sonPtr'nin gosterdigi elemanin(node'un)
* sonuna eklenir.
*/
add(int x) {
// Dugumu olusturup datasini ata.
NODE *newPtr;
newPtr = malloc(sizeof(NODE)); //Yeni dügüm için yer alinir.
newPtr->data = x; //Yeni dugumun data'si atanir.
newPtr->rearPtr = NULL;
if (ilkPtr == NULL) { // Eger kuyruk bossa.
ilkPtr = newPtr;
sonPtr = newPtr;
} else { // Kuyruk bos degilse
printf("Ekledim.\n");
sonPtr->rearPtr = newPtr;
sonPtr = newPtr;
}
} // add() sonu.
/**
* Eleman kuyrugun basindan silinir, yani ilkPtr'nin gosterdigi node silinir.
*/
int get() {
NODE *tmpPtr;
if (ilkPtr == NULL) { // Kuyruk bossa.
printf("\nKuyruk zaten bos!\n");
return -1;
}
int x;
tmpPtr = ilkPtr; // Silinecek dügüm tmpPtr olsun.
x = tmpPtr->data; // Silinecek dugumun data'sini dondurulecek dugume ata.
ilkPtr = tmpPtr->rearPtr; // Kuyruk basi isaretcisi bir onceki dugumu gostersin.
free(tmpPtr); // Silinecek dugumun kapladigi yeri bellege geri ver.
printf("\nCikarilan eleman: %d", x);
return x; // Silinen data'yi dondur.
} //get() sonu.
/**
* Listele
*/
list() {
NODE *curPtr;
curPtr = ilkPtr;
if (ilkPtr == NULL) { // Kuyruk bossa.
printf("\nKuyruk bos!\n");
} else { //Kuyrukta eleman varsa.
printf("\nKuyruk: ");
while(curPtr != NULL) {
printf("%d -", curPtr->data);
curPtr = curPtr->rearPtr;
}
}
} //list() sonu.
/**
* main() fonksiyonu.
*/
main (int argc, char *argv[]) {
//
add(1);
add(2);
add(3);
list();
get();
list();
get();
list();
get();
list();
get();
printf("\n --------------- Biti --------------\n");
return 0;
} //main() sonu.