Baglantili liste yontemiyle basit ve az kontrollu bir yigin �rnegi.
/** * Program: yigin-2005.05.20.c * Versiyon: 0.1 * Aciklama: Dinamik bellek yontemi ile yigin uygulamasi. * * Kaynaklar: * Veri Yapilari ve Algoritmalar, Rifat Colkesen */ #include <stdio.h> #include <stdlib.h> #include <string.h> // Yigina koyulacak veritipini belirle. typedef struct ynode { int data; struct ynode *rearPtr; } YNODE; // Yigindaki son elemani isaret edecek yigin isaretcisi. YNODE *yi = NULL; /** * Gelen eleman yiginin tepesine baglantili listenin sonuna eklenir. */ push(int x) { // Dugumu olusturup datasini ata. YNODE *newPtr; newPtr = malloc(sizeof(YNODE)); //Yeni d�g�m i�in yer alinir. newPtr->data = x; //Yeni dugumun data'si atanir. newPtr->rearPtr = yi; //Yeni dugumun nextPtr'si bir onceki dugumu gostersin. yi = newPtr; //Yigin isareticisi yeni dugumun adresini gostersin. } /** * Eleman yiginin tepesinden baglantili listenin sonundan silinir. */ int pop() { YNODE *tmpPtr; int x; tmpPtr = yi; // Silinecek d�g�m tmpPtr olsun. x = tmpPtr->data; // Silinecek dugumun data'sini dondurulecek dugume ata. yi = tmpPtr->rearPtr; // Yigin isaretcisi bir onceki dugumu gostersin. free(tmpPtr); // Silinecek dugumun kapladigi yeri bellege geri ver. printf("\nCikarilan eleman: %d", x); return x; // Silinen data'yi d�d�r. } /** * Listele */ list() { YNODE *curPtr; curPtr = yi; printf("\nYigin: "); while(curPtr != NULL) { printf("%d -", curPtr->data); curPtr = curPtr->rearPtr; } } /** * main() fonksiyonu. */ main (int argc, char *argv[]) { // push(1); push(2); push(3); list(); pop(); list(); printf("\n --------------- Biti --------------\n"); return 0; } //main() sonu.