还剩2页未读,继续阅读
文本内容:
数据结构实验报告学号2019xxxxxx姓名张三专业计算机科学与技术知识范畴线性表完成日期2020年10月13日实验题目队列基本操作算法课程目标1(3分)课程目标2(2分)批阅人签字总分(5分)程序代码及测试写作、排版、代码注释等实验内容及要求编写程序,建立容量为n(建议n=8)的循环队列,完成以下程序功能输入字符#,执行一次出队操作,屏幕上显示出队字符;输入字符@,队列中所有字符依次出队并按出队次序在屏幕上显示各字符;输入其它字符,则输入的字符入队要求采用队头/队尾间隔至少一个空闲元素的方法来实现循环队列;空队执行出队操作及队满执行入队操作需显示提示信息注意反复输入字符时,需正确处理好回车键(即输入缓冲区的字符)的读取问题实验目的掌握循环队列的基本操作算法数据结构设计简要描述:循环队列,使用一组地址连续的存储单元依次存放队列头到队列尾的char型元素,同时附设两个指针front和rear分别指示队列头元素和队列尾元素的位置算法设计简要描述每次输入读入一个字符,若为字符扎则队列头出队一次,头指针在循环意义下+1;若为字符我将队列内所有字符依次执行出队操作,头尾指针回到同一位置;若为其他字符,则在队尾将元素入队,尾指针在循环意义下+1输入/输出设计简要描述每次从键盘中输入一个字符,完成对应功能若输入字符#,则输出队首字符;若输入字符@,则依次输出队列中全部字符;若输入其他字符,则输出当前队列长度,再进行下个字符的输入编程语言说明使用Dev C++编程主要代码使用C语言实现,使用C语言的malloc函数开辟内存空间;输入输出采用C语言的scanf和printf格式化输入输出;程序注释采用C/C++规范主要函数说明void InitQueue(SqQueue Q)〃创建并初始化队列头尾指针int QueueLength(SqQueue Q)〃计算队列长度,返回int型队列长度void EnQueue(SqQueue Q,char e)〃队尾入队int DeQueueSqQueue Q〃队头出队,成功返回int型字符ASCH码,失败返回T int main〃主函数程序测试简要报告测试实例1InputaNow length1InputbNow length2InputcNow length3Input#OutputaInputdNow length3Input@Outputbed结论程序输出结果与期望输出结果相符源程序代码#includestdio.h#includestdlib.httdefine MAXQSIZE8typedef structQueue{char*base;int front;int rear;SqQueue;void InitQueueSqQueue Q{〃创建并初始化队列头尾指针Q.base=char*mallocMAXQSIZE*sizeof int;Q.front=Q.rear=0;return;int QueueLengthSqQueue Q{//计算队列长度return Q.rear-Q.front+MAXQSIZE%MAXQSIZE;void EnQueueSqQueue Q,char e{〃队尾入队ifQ.rear+l%MAXQSIZE二二Q.front return;〃队列满Q.base[Q.rear]=e;Q.rear=Q.rear+l%MAXQSIZE;//循环意义下的+1return;int DeQueueSqQueueQ{〃队头出队if Q.front==Q.rear returnT;〃队列为空char e=Q.base[Q.front];Q.front=Q.front+l%MAXQSIZE;〃循环意义下+1return e;intmain{〃主函数SqQueueQ;InitQueueQ;while1{printfInput〃;char c,tmp;c=getchar;whiletmp=getchar,tmp!=\n;//处理多余字符及换行ifc=#{〃#->出队一次if QueueLengthQ!=0{〃队列非空char ans=DeQueue Q;printf,zOutput%c\n〃,ans;elseprintf CzOutput Error!\n〃;〃队列空}else ifc=@{//@->全部出队ifQueueLength Q==0{printf,zOutputError!\nz,;}else{printf,zOutput〃;whileQueueLengthQ{〃依次输出全部元素printf〃%c〃,DeQueue Q;}else{〃其他字符->入队,同时输出当前队列长度EnQueue Q,c;printf Nowlength%d\nz,,QueueLength Q;。
个人认证
优秀文档
获得点赞 0