资源预览内容
第1页 / 共7页
第2页 / 共7页
第3页 / 共7页
第4页 / 共7页
第5页 / 共7页
第6页 / 共7页
第7页 / 共7页
亲,该文档总共7页全部预览完了,如果喜欢就下载吧!
资源描述
实验四栈和队列、实验目的1、了解和掌握顺序栈、链栈的定义和基本运算,能够使用类C表示及实现其基本运算。2、了解和掌握循环队列、链队的定义和基本运算,能够使用类C表示及实现其基本运算。3、能够使用栈解决实际应用问题,如数制转换。4、能够使用栈解决实际应用问题,如打印杨辉三角。二、栈基本运算实验的内容及步骤1、新建项目:链栈。2、在项目中新建文件LinkStack. cpp3、在LinkStack. cpp中根据链栈的定义,补充实现链栈中各个方法,并在主函数中使用所提 供的测试函数void LinkStackTest ()进行测试,将测试结果截图至实验报告中。LinkStack. cpp文件中的部分源代码如下:#include#includectime#includeusing namespace std;typedef int elemtype;struct StackNodeelemtype data;StackNode *next;typedef StackNode* LinkStack;void LinkStacklnit(LinkStack &s)在这里补充完成该函数void LinkStackPush(LinkStack &s, elemtype e)/在这里补充完成该函数void LinkStackPop(LinkStack &s)在这里补充完成该函数void LinkStackClear(LinkStack &s)while(Snext)LinkStackPop(s);void LinkStackDestroy(LinkStack &s)LinkStackClear (s);delete s;bool LinkStackEmpty(LinkStack &s)在这里补充完成该函数elemtype LinkStackTop(LinkStack &s)在这里补充完成该函数void LinkStackPrint(LinkStack &s)if(LinkStackEmpty(s)cout,z栈空,next;while(p)coutp-data ”;p二p-next;coutendl;void LinkStackTest()cout,zLinkStack Test: /zendl;LinkStack S;LinkStacklnit(S);/插入元素测试srand(unsigned(time(NULL);for(int i二0;i10;i+)LinkStackPush (S, rand()%100);LinkStackPrint (S);/删除元素测试for(int i=l;i16 | | m2)cout,/转换的进制超过范围,endl;return;LinkStack s;LinkStacklnit(s);while (n!=0)/在这里补充完成该函数cout,/转换后的进制数是:;while(!LinkStackEmpty(s)/在这里补充完成该函数coutendl;2、在主函数中使用以下函数进行测试,并将测试结果截图至实验报告中。void ConvertTest()srand(unsigned(time(NULL);int n=rand()%1000;cout/,输入的十进制数为:,nendl;Convert (n, 2);Convert (n, 8);Convert (n, 16);四、队列基本运算实验的内容及步骤1、新建项目:循环队列。2、在项目中新建文件SeqQueue. cpp3、在SeqQueue. cpp中根据循环队列的定义,补充实现循环队列中各个方法,并在主函数中使 用所提供的测试函数void SeqQueueTest ()进行测试,将测试结果截图至实验报告中。SeqQueue. cpp文件中的部分源代码女口下:#include#include#includectimeusing namespace std;typedef int elemtype;struct SeqQueueelemtype *elem;int size;int front;int rear;void SeqQueuelnit(SeqQueue &q,int initsize)在这里补充完成该函数void SeqQueueDestroy(SeqQueue &q)在这里补充完成该函数bool SeqQueueEmpty(SeqQueue &q)在这里补充完成该函数void SeqQueueClear(SeqQueue &q)在这里补充完成该函数elemtype SeqQueueFront (SeqQueue &q)在这里补充完成该函数void SeqQueuelncresize(SeqQueue &q)在这里补充完成该函数;void SeqQueueln (SeqQueue &q, elemtype e)在这里补充完成该函数;void SeqQueueOut(SeqQueue &q)在这里补充完成该函数;void SeqQueuePrint(SeqQueue &q)if(SeqQueueEmpty(q)cout,/ 队列空,/endl;return;for(int i=0;i (q.rearq. front+q. size) %q. size;i+) coutq elem(q. front+i)%q. sizeJ ;coutendl;void SeqQueueTest()cout,zSeqQueue Test:,zendl;SeqQueue q;SeqQueueInit(q,10);/插入元素测试srand(unsigned(time(NULL);for(int i=0;i20;i+)SeqQueueIn(q, rand()%100);SeqQueuePrint (q);/删除元素测试for(int i=l;i=3;i+)SeqQueueOut(q);SeqQueuePrint(q);五、使用队列完成打印杨辉三角1、在SeqQueue. cpp添加以下打印杨辉三角函数并实现。函数实现将十进制数n转换为m进制 数,具体如下:void PrintYanghui(int rows)int currentRow二0;SeqQueue q;SeqQueueInit(q, 10);SeqQueueln(q, 0);SeqQueueln(q, 1);int temp;while (currentRow=rows)/在这里补充完成该函数;coutendl;2、在主函数中使用以下函数进行测试,并将测试结果截图至实验报告中。void PrintYanghuiTest ()srand(unsigned(time(MULL);int n=rand()%10+6;cout,z待打印的杨辉三角行数为nendl;PrintYanghui(n);六、实验小结本次实验过程中的遇到的问题,解决办法,实验的收获和心得体会等。
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号