有哪些可以免费推广的网站,互联网营销师怎么报考,搭建wordpress脚本,深圳做营销网站制作一、实验目的
1#xff0e;掌握队列的顺序存储结构 2#xff0e;掌握队列先进先出运算原则在解决实际问题中的应用
二、实验内容 仿照教材顺序循环队列的例子#xff0c;设计一个只使用队头指针和计数器的顺序循环队列抽象数据类型。其中操作包括#xff1a;初始化、入队…一、实验目的
1掌握队列的顺序存储结构 2掌握队列先进先出运算原则在解决实际问题中的应用
二、实验内容 仿照教材顺序循环队列的例子设计一个只使用队头指针和计数器的顺序循环队列抽象数据类型。其中操作包括初始化、入队列、出队列、判断队列是否非空。编写主函数验证所设计的顺序循环队列的正确性。 以下是队列操作函数的定义 (1) QueueInitiate(Q) 初始化队列Q (2) QueueNotEmpty(Q) 队列Q非空否 (3) QueueAppend(Q,x) 入队列在队列Q的队尾插入数据元素x。 (4) QueueDelete(Q,d) 出队列把队列Q的队头元素删除并由参数d带回。 提示队尾的位置可由队头指针与计数器进行求解请思考它们之间的关系同时还要考虑如何实现循环队列可借助求模运算。 利用以上队列函数编写算法用函数表示算法计算杨辉三角并打印对应的数值。
三、实验源代码 queue.h
#include iostream
#include cstdio
#include cstring
using namespace std;
typedef struct queue
{int* s;int front;int cnt;
}Q;
int mx 100;
void QueueInitiate(Q* q)
{q-s (int*)calloc(0, sizeof(int)*mx);q-cnt 0;q-front 0;
}int QueueNotEmpty(Q* q)
{return q-cnt;
}void QueueAppend(Q* q,int c)
{int r (q-front q-cnt)%mx;//下标映射if (q-cntmx){cout 队列已满请稍后重试 endl;return;}q-s[r] c;q-cnt;
}void QueueDelete(Q* q,int* d)
{if(q-cnt 0){cout 队列为空删除失败endl;return;} *d q-s[q-front];q-front (q-front1)%mx;q-cnt--;
}queue.cpp
#include queue.h
//队列实现杨辉三角
void testYangHui()
{cout请输入杨辉三角的层数;int n;cin n;Q* q new Q;mx 1000;QueueInitiate(q);
// 初始化QueueAppend(q, 1);int x 0;for(int i 1; i n;i){int margin 1;//表示两边的 1int cnt i-1;//cnt表示当前行除最后一个元素外的元素个数QueueAppend(q,margin);//给下一行添加左边的1while(cnt--){ QueueDelete(q,x);// x 表示当前队首元素cout x ;QueueAppend(q,xq-s[q-front]);}
// 处理最后一个元素因为最后一个元素无后继元素和它相加构成下一行的元素QueueDelete(q,x);cout x ;QueueAppend(q,margin);//给下一行添加右边的1cout endl;}
}
void menu(){cout 选择你的操作 endl;cout 1 x入队一个元素x endl;cout 2出队队一个元素 endl;cout 3输出队列所有元素 endl;cout 0结束 endl;cout endl;}
void print(Q* q)
{int cnt q-cnt;if(cnt0){cout 队列为空 endl;return;} int front q-front;while(cnt--){int x q-s[front];cout x ;front % mx;}cout endl;
}
//验证循环数组实现队列的正确性
void testTrue()
{int flag,x;Q* q new Q;mx 3;QueueInitiate(q);menu();while(true){cin flag;switch (flag) {case 1:{ cin x;QueueAppend(q,x);break;}case 2:{int flag QueueDelete(q,x);if(flag)cout 元素 x 出队 endl;break;}case 3:{ print(q);break;}case 0:return;default:cout 非法输入 endl;}}
}int main(void)
{testTrue();
// testYangHui();return 0;
}
四、实验结果测试数据 # 五、实验总结