.h
#define MAX_SIZE 1024
typedef struct SEQSTACK
{
void *data[MAX_SIZE];
int size;
}SeqStack;
class stack
{
public:
stack();
~stack();
public:
SeqStack* Stack;
public:
//入栈
void Push_Back (SeqStack* stack,void *data);
//返回栈顶元素
void *Top_SeqStack(SeqStack* stack);
//出栈
void Pop_Back(SeqStack* stack);
//判断是否为空
bool IsEmpty(SeqStack* stack);
//返回栈中的元素个数
int Size_SeqStack(SeqStack* stack);
//清空栈
void Clear_SeqStack(SeqStack* stack);
};
.cpp
stack::stack()
{
Stack = new SeqStack;
for (size_t i = 0; i < MAX_SIZE; i++)
{
Stack->data[i] = NULL;
}
Stack->size = 0;
}
stack::~stack()
{
if (Stack != NULL)
{
return;
}
delete Stack;
}
//入栈
void stack::Push_Back(SeqStack* stack, void *data)
{
if ( stack==NULL || data==NULL || stack->size==MAX_SIZE)
{
return;
}
stack->data[stack->size] = data;
stack->size++;
}
//返回栈顶元素
void* stack::Top_SeqStack(SeqStack* stack)
{
if (stack == NULL || stack->size == 0)
{
return NULL;
}
return stack->data[stack->size-1];
}
//出栈
void stack::Pop_Back(SeqStack* stack)
{
if (stack == NULL || stack->size == 0)
{
return ;
}
stack->data[stack->size - 1] = NULL;
Stack->size--;
}
//判断是否为空,空返回true否则者返回false
bool stack::IsEmpty(SeqStack* stack)
{
if (stack == NULL || stack->size == 0)
{
return true;
}
return false;
}
//返回栈中的元素个数
int stack::Size_SeqStack(SeqStack* stack)
{
return stack->size;
}
//清空栈
void stack::Clear_SeqStack(SeqStack* stack)
{
if (stack == NULL)
{
return;
}
for (int i = 0; i < stack->size; i++)
{
stack->data[i] = NULL;
}
stack->size = 0;
}
main.cpp
typedef struct PERSON
{
char name[64];
int age;
}Person;
int main()
{
stack* s = new stack();
//创建数据
Person p1 = { "p1",10 };
Person p2 = { "p2",20 };
Person p3 = { "p3",30 };
Person p4 = { "p4",40 };
Person p5 = { "p5",50 };
//入栈
s->Push_Back(s->Stack, &p1);
s->Push_Back(s->Stack, &p2);
s->Push_Back(s->Stack, &p3);
s->Push_Back(s->Stack, &p4);
s->Push_Back(s->Stack, &p5);
//输出
while (s->Size_SeqStack(s->Stack) >0)
{
//访问栈顶元素
Person* person = (Person*)s->Top_SeqStack(s->Stack);
//输出
cout << "Name:"<< person->name<<" ";
cout << "Age:" << person->age << " ";
cout << endl;
//弹栈
s->Pop_Back(s->Stack);
}
return 0;
}
学过汇编的都知道不多说了