欢迎来到天天文库
浏览记录
ID:33412964
大小:56.19 KB
页数:6页
时间:2019-02-25
《实验四--栈和队列验证实验》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、实验四栈和队列操作验证1・实验目的(1)掌握栈的顺序存储结构;(2)掌握栈的操作特性;(3)掌握基于顺序栈的基本操作的实现方法。(4)掌握队列的链接存储结构;(5)掌握队列的操作特性;(6)掌握基于链队列的基本操作的实现方法。2.实验内容(1)建立一个空栈;(2)对已建立的栈进行插入、删除、取栈顶元素等基本操作;(3)建立一个空队列;(4)对已建立的队列进行插入、删除、取队头元素等基本操作。3・编码头文件zgyll23.hconstintStackSize=10;template〃定义模板类SeqStackclass
2、SeqStack{public:SeqStack();〃构造函数,初始化一个空栈~SeqStack(){}voidPush(Tx);//将元素x入栈TPop();〃将栈顶元素弹出TGetTop();〃取栈顶元素(并不删除)private:Tdata[StackSize];〃存放栈元素的数组inttop;〃栈顶指针,指示栈顶元素在数组屮的下标};templatestructNode{Tdata;Node*next;};templateclassLinkQueue{public:LinkQueue(
3、);〃构造函数,初始化一个空的链队列-LinkQueue();〃析构函数,释放链队列中各结点的存储空间voidEnQueue(Tx);〃将元素x入队TDeQueue();〃将队头元素出队TGetQueue();〃取链队列的队头元素private:Node*front,*rear;〃队头和队尾指针,分别指向头结点和终端结点};函数实现文件zgyll2354.cpp#include#include°zgyl123.hnusingnamespacestd;templateSeqStack::
4、SeqStack(){top=-1;}templatevoidSeqStack::Push(Tx){if(top==StackSize-1)throw"上溢”;top++;data[top]=x;templateTSeqStack::Pop(){if(tOp==-l)throw“下溢”;Tx=data[top-J;returnx;}templateTSeqStack::GetTop(){if(top==-l)throw"下溢";Tx=dataftop];returnx
5、;)templateLinkQueue::LinkQueue(){Node*s=newNode;s->next=NULL;〃创建一个头结点sfront=rear=s;〃将队头指针和队尾指针都指向头结点s}templateLinkQueue::*-LinkQueue(){while(front!=NULL){Node*q=front;front=front->next;deleteq;templatevoidLinkQueue::EnQueue(Tx)
6、Node*s=newNode;s->data=x;〃屮请一个数据域为x的结点ss->next=NULL;rear->next=s;//将结点s插入到队尾rear=s;}templateTLinkQueue::DeQueue(){if(rear==front)throw"下溢";Node*p=front->next;Tx=p->data;〃暂存队头元素front->next=p->next;〃将队头元素所在结点摘链讦(p->next==NULL)reai-front;〃判断出队前队列长度是否为1
7、deletep;returnx;}templateTLinkQueue::GetQueue(){if(rear==front)throw"下溢”;Node*p=front->next;Tx=p->data;returnx;1主函数#include#includeHzgyl12354.cpp"usingnamespacestd;voidmain(){cout«"初始化一个空栈sr'«endl;SeqStacksi;cout«n将元素77,88,99入栈H«endl;sl.Pus
8、h(77);sl.Push(88);sl.Push(99);cout«"将栈顶元素弹出:"«s1.Pop()«endl;cout«"取栈顶元素(并不删除)M«s1.GetTop()«endl;cout«n初始化一个空的链队列Hn«en
此文档下载收益归作者所有