栈与队列
一:栈
1.顺序栈的实现
template
class SeqStack
{
public:
SeqStack(){top=-1;}
~SeqStack(){}
void Push(DataType x);
DataType Pop();
DataType GetTop(){if(top!=-1)return data[top];}
int Empty(){if (top==-1)return 1;else return 0;}
private:
DataType data[StackSize];
int top;
};
2.顺序栈入栈
template
void SeqStack::Push(DataType)
{
int x;
if(topStackSize-1)throw"上溢";
data[++top]=x;
}
3.出栈
template
DataType SeqStack::Pop()
{
int x;
if(top-1)throw"下溢";
x=data[top–];
return x;
}
5.链栈实现
template
class LinkSkack
{
public:
LinkStack(){top=NULL;}
~LinkSkack();
void Push (DataType x);
DataType Pop();
DataType GetTop(){if(top!=NULL)return top->data;}
int Empty(){if(topNULL)return 1;else return 0;}
private:
Node*top;
};
6.入链栈
template
void LinkSkack::Push(DataType x)
{Node *s;
s=new Node;s->data=x;
s->next=top;top=s;
}
7.出链栈
template
DataType LinkSkack::Pop()
{ Node *p;
DataType x;
if(topNULL)throw"обрГ";
x=top->data;p=top;
top=top->next;
delete p;
return x;
}