Implementarea Comparativa a unei  Stive

in C respectiv in C++





 
 Implementare C (procedurala)
Implementare C++ (obiectuala)
 
#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();
}

 
 
Hosted by www.Geocities.ws

1