Baglantili liste yontemiyle basit bir kuyruk �rnegi.
/** * 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.