|
|
|
| #define
STACK_SIZE 10
struct Stack { int *items; int sp; }; void Stack_initialize(struct Stack *s) { s->items = (int*)malloc(STACK_SIZE*sizeof(int)); s->sp = -1; } void Stack_destroy(struct Stack *s) { free(s->items); } int Stack_top(struct Stack *s) { return s->items[s->sp]; } int Stack_pop(struct Stack *s) { return s->items[s->sp--]; } void Stack_push(struct Stack *s, int i) { s->items[++s->sp] = i; } void main(void) { struct Stack q; int i; Stack_initialize(&q); Stack_push(&q, 1); i = Stack_top(&q); printf("%d\n", i); Stack_pop(&q); Stack_destroy(&q); } |
const
int STACK_SIZE = 10;
class Stack { public: Stack(); ~Stack(); int top(); int pop(); void push(int); private: int *items; int sp; }; Stack::Stack() { items = new int[STACK_SIZE]; sp = -1; } Stack::~Stack(){ delete []items; } int Stack::top() { return items[sp]; } inline int Stack::pop() { return items[sp--]; } void Stack::push(int i) { items[++sp] = i; } main() { Stack q; q.push(1); int i = q.top(); cout << i << endl; q.pop(); } |