From Wiki

C: QueueExample1

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.

Retrieved from http://kozgun.net/wiki/pmwiki.php?n=C.QueueExample1
Page last modified on September 03, 2005, at 05:35 PM