.h
#ifndef MYSTACK_H
#define MYSTACK_H
typedef struct _node
{
char data;
struct _node *next;
}Node;
class mystack
{
public:
mystack();
int isempty();
void push(char data);
char pop();
void reserve();
~mystack();
private:
Node *top;
};
#endif
.cpp
#include "mystack.h"
#include <stdlib.h>
mystack::mystack()
{
top = (Node*)malloc(sizeof(Node));
top->next = NULL;
}
int mystack::isempty()
{
return top->next == NULL;
}
void mystack:: push(char data)
{
Node *cur = (Node*)malloc(sizeof(Node));
cur->data = data;
cur->next = top->next;
top->next = cur;
}
char mystack:: pop()
{
Node *t;
t = top->next;
char tem = t->data;
top->next = t->next;
free(t);
return tem;
}
void mystack:: reserve()
{
while(!isempty())
{
pop();
}
}
mystack::~mystack()
{
reserve();
free(top);
}
main
#include <iostream>
#include "mystack.h"
using namespace std;
int main(int argc, char *argv[])
{
mystack st;
for(char i = 'A';i<='Z';i++)
{
st.push(i);
}
while(!st.isempty())
{
cout<<st.pop()<<endl;
}
st.reserve();
return 0;
}