文档介绍:1 / 6
班级:计算机11-1 学号: 姓名: 成绩:_________
实验一 顺序表操作验证
实验目的
(1)掌握栈的顺序存储结构;
(2)掌握栈的操作特性;
(3)掌握基于顺序栈的基本操作的实现方法。
(4)掌 *rear; //队头和队尾指针,分别指向头结点和终端结点
};//顺序栈初始化算法
template <class T>
SeqStack<T>::SeqStack()
{
top=-1;
}//顺序栈入栈算法Push
template <class T>
void SeqStack<T>::Push(T x)
{
if (top==StackSize-1)
cout<<"上溢"<<endl;
else
data[++top]=x;
}//顺序栈出栈算法Pop
template <class T>
T SeqStack<T>::Pop()
{
int x;
if (top==-1)
cout<<"栈为空,无法删除"<<endl;
else
x=data[top--];
return x;
}template <class T>
T SeqStack<T>::GetTop()
{
if(top==-1)
cout<<"栈为空"<<endl;
else
cout<<"栈顶的元素为:"<<data[top]<<endl;
return 0;
}//链队列构造函数算法LinkQueue
template <class T>
LinkQueue<T>::LinkQueue( )
{
3 / 6
Node<T>*s;
s=new Node<T>;
s->next=NULL; //创建一个头结点s
front=rear=s; //将队头指针和队尾指针都指向头结点s
}template <class T>
LinkQueue<T>::~LinkQueue()
{
Node<T> *q,*front;
while(front!=NULL)
{
q=front;
front=front->next;
delete front;
}
}//链队列入队算法EnQueue
template <class T>
void LinkQueue<T>::EnQueue(T x)
{
Node<T>*s;
s=new Node<T>;
s->data=x; //申请一个数据域为x的结点s
s->next=NULL;
rear->next=s; //将结点s插入到队尾
rear=s;
}//链队列出队算法DeQueue
template <class T>
T LinkQueue<T>::DeQueue( )
{
int x;
Node<T>*p;
if (rear==front)
cout<<"下溢"<<endl;
else
p=front->next;
x=p->data; //暂存队头元素
front->next=p