2009-08-10

Stack

Stack нь компьютерийн програмчлалд их хэрэглэгдэх өгөгдлийн бүтэц юм. Ажиллах зарчмын хувьд LIFO (last in first out) буюу “сүүлд нэмэгдсэн нь эхэлж гарна” гэж тайлбарлагдана. Монгол хэлээр юу гэж хэрэглэж болох вэ гэж бодоод “Болор Толь”-руу орж үзвэл “бухал”, “овоо”, “тавиур” гэсэн үгүүд байж болох.

Энд нэг жишээ тавья! Уул нь генерик өгөгдөл дээр жишээ бол сайн байх ч, одоохондоо зөвхөн бүхэл тооны жишээ тавья:

stack.h
#ifndef _STACK_H
#define _STACK_H

typedef struct {
   int logiclen;
   int alloclen;
   int * elems;
} stack;

void StackNew(stack * s);

void StackDispose(stack * s);

void StackPush(stack * s, int value);

int StackPop(stack * s);

#endif

stack.c
#include 
#include "stack.h"

void StackNew(stack * s) {
    s->logiclen = 0;
    s->alloclen = 4;
    s->elems = malloc(4*sizeof(int));
}
void StackDispose(stack * s) {
    free(s->elems);
    free(s);
}
void StackPush(stack * s, int value) {
    s->elems[s->logiclen] = value;
    s->logiclen++;
}
int StackPop(stack * s) {
    s->logiclen--;
    return s->elems[s->logiclen];
}

program.c
#include 
#include "stack.h"

int main() {
    stack s;
    StackNew(&s);
    StackPush(&s, 4);
    StackPush(&s, 5);
    StackPush(&s, 6);
    printf("%d\n", StackPop(&s));
    printf("%d\n", StackPop(&s));
    printf("%d\n", StackPop(&s));
    StackDispose(&s);
    system("PAUSE");
    return 0;
}

No comments:

Post a Comment