姓名:
学号:
实验项目 栈和队列及其应用(I) 实验内容 2.采用顺序存储结构,实现队列的存储和基本操作。 算法设计与程序实现: 算法分析一: 算法分析 1、定义栈元素类型与空间大小,对栈进行基本操作。 2、定义init函数初始化栈,push函数入栈,pop则是出栈元素等。相应基本算法描述见书上p47页。 3、判断栈是否为空以及是否为满则定义isempty和isfull函数将指针分别指向栈首与栈为即可判断。 4、搜索栈中元素,则将输入元素与栈内元素一一进行比较,操作数依次递增。对比完成后输出其操作数即为元素位置。 算法分析二: 1、头文件与题目一相似,根据书中P61页内容进行一定的更改后可得相应代码。 2、创建新队列—清空—判断是否为空是否为满,其原理同上。队列长度以及查出删除元素均以书上为标准。 1.采用顺序存储结构,实现栈的存储和基本操作。 核心程序 #include bool isEmpty(seqStack*);//判断栈是否为空 bool isFull(seqStack*);//判断栈是否已满 int length(seqStack);//返回栈的大小 void ergodic(seqStack*);//遍历栈中元素 int search(seqStack*,TYPE);//搜索,返回是第几个元素,失败则返回-1 int main() { seqStack nodes; //栈初始化 init(&nodes); //元素入栈 printf(\"输入要入栈的元素个数:\"); int count = 0; scanf(\"%d\ TYPE elem; printf(\"输入%d个入栈元素:\ if(count<=SIZE-length(nodes)) { while(count) { scanf(\"%d\ push(&nodes,elem); count--; } } else { printf(\"\\n输入数据过多或者栈已满,入栈失败\\n\"); } //元素出栈 if(!isEmpty(&nodes)) printf(\"出栈元素是:%d\\n\ else printf(\"栈已空,出栈失败!\\n\"); 电子信息工程学院2015级《数据结构》实验报告 //搜索元素 printf(\"输入要搜索的元素:\"); scanf(\"%d\ int number = search(&nodes,elem); if(number>0) printf(\"找到元素%d是第%d个元素\\n\ else printf(\"元素%d不存在\\n\ //遍历栈 printf(\"遍历栈:\"); ergodic(&nodes); //清空栈 clear(&nodes); printf(\"清空后遍历:\"); ergodic(&nodes); return 0; } //栈初始化 void init(seqStack* stack) { stack->length = 0; } //入栈操作 void push(seqStack* stack,TYPE e) { if(!isFull(stack)) { stack->data[stack->length] = e; stack->length++; } //判断上面最后一个元素插入后,栈满则清空缓冲区 //不能用else分支,必须用isFull再判断一次 if(isFull(stack)) { scanf(\"%*[^\\n]\"); scanf(\"%*c\"); } } 电子信息工程学院2015级《数据结构》实验报告 //出栈操作 TYPE pop(seqStack* stack) { stack->length--; return stack->data[stack->length]; } //判断是否为空 bool isEmpty(seqStack* stack) { return stack->length==0; } //判断是否为满 bool isFull(seqStack* stack) { return stack->length>=SIZE; } //返回栈的长度 int length(seqStack stack) { return stack.length; } //遍历栈 void ergodic(seqStack* stack) { for(int i=0;i } } return pos; } //清空栈 void clear(seqStack* stack) { stack->length = 0; } 2.采用顺序存储结构,实现队列的存储和基本操作。 #include } Status GetHead_Sq(SqQueue &Q,QElemType *e){ //若队列不空,则返回队头元素e,并返回函数结果状态OK;否则返回ERROR if(Q.front==Q.rear) return ERROR; *e=Q.base[Q.front]; cout<<\"队列首元素:\"<<*e< 电子信息工程学院2015级《数据结构》实验报告 因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- oldu.cn 版权所有 浙ICP备2024123271号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务