这个是在前面顺序存储结构的基础上实现代码复用
/*seqStack.h*/
#pragma once
#include "mseqList.h"
using SeqStack = SeqList;
using SeqStackNode = SeqListNode;
class seqStack{
private:
mseqList chen;
public:
seqStack();
~seqStack();
SeqStack* SeqStack_Create(int capacity);
void SeqStack_Destroy(SeqStack* stack);
void SeqStack_Clear(SeqStack* stack);
int SeqStack_Push(SeqStack* stack, SeqStackNode* item);
void* SeqStack_Pop(SeqStack* stack);
void* SeqStack_Top(SeqStack* stack);
int SeqStack_Size(SeqStack* stack);
int SeqStack_Capacity(SeqStack* stack);
};
/*seqStack.cpp*/
#include "seqStack.h"
seqStack::seqStack() { }
seqStack::~seqStack() { }
SeqStack* seqStack::SeqStack_Create( int capacity) { //o(1)
return chen.SeqList_Create( capacity );
}
void seqStack::SeqStack_Destroy( SeqStack* stack) { //o(1)
chen.SeqList_Destroy( stack );
}
void seqStack::SeqStack_Clear(SeqStack* stack) {
chen.SeqList_Clear( stack );
}
int seqStack::SeqStack_Push(SeqStack* stack, SeqStackNode* item) {
return chen.SeqList_Insert( stack , item , chen.SeqList_Length(stack) );
}
void* seqStack::SeqStack_Pop(SeqStack* stack) {
return chen.SeqList_Delete( stack , chen.SeqList_Length(stack)-1 );
}
void* seqStack::SeqStack_Top(SeqStack* stack) {
return chen.SeqList_Get( stack , chen.SeqList_Length(stack)-1 );
}
int seqStack::SeqStack_Size(SeqStack* stack) {
return chen.SeqList_Length(stack);
}
int seqStack::SeqStack_Capacity(SeqStack* stack) {
return chen.SeqList_Capacity(stack);
}
/*main.cpp*/
#include "seqStack.h"
int main( int argc , char **argv ) {
seqStack chen;
SeqStack *stack = chen.SeqStack_Create( 5 );
unsigned int a[10];
for (int i = 0; i < 10; ++i ) {
a[i] = i;
chen.SeqStack_Push( stack , a+i );
}
for (int i = 0; i < 5 ; ++i ) {
cout<<*(SeqStackNode*)(chen.SeqStack_Pop(stack))<<endl;
}
system( "pause" );
return 0;
}