From Wiki

C: StackExample1

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.

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