设计一个顺序循环队列,长度len为10,队列中有n个元素(1≤n<10)。选择任意一个元素为蛇的头部,队尾元素为蛇的尾部。贪吃蛇开始移动吃他前面的元素,并追加至蛇的尾部,使蛇变长。
输入格式:
第1行,第1个数为一串整形数字,第2个元素表示队头元素的下标值。
第2行,第1个数表示蛇头部的元素,第2个数表示蛇头部元素的下标值。
输出格式:
输出为每次吃一个元素,蛇头部往前移动,吃进去的元素添加值蛇尾。
每次输出的第1行为吃元素后的数列状态,第2行为蛇头部元素和头部元素的下标值。
输入样例:
在这里给出一组输入。例如:
123456789 0
3 2
输出样例:
在这里给出相应的输出。例如:
134567892
3 1
345678921
3 0
具体代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
int i,e,front,j,h,m,count,cou;
char s[10];
int a[10];//定义数组存放
scanf("%s",s);
scanf("%d",&h);//输入队头元素的下标值
//计算位数cou
cou = strlen(s);
for(i=0; i<cou; i++) {
a[(h+i)%10] = s[i]-'0';
}
//输入蛇头部的元素
scanf("%d",&front);
//头部元素的下标值
scanf("%d",&j);
//计算吃几次count
count=(j+10-h)%10;
//int s=(j-1+9)%10;//要删除的下标
while(count>0) {
e=a[(h+count-1)%10]; //接收值
for(i=0; i<cou-count; i++) {
a[(h+count+i-1)%10]=a[(h+count+i)%10];
}
a[(h-1+cou)%10]=e;
//EnQueue (Q,e);
j=(j+9)%10;
//输出
for(i=0; i<cou; i++) {
//DeQueue (Q,e);
//cout<<e;
printf("%d",a[(h+i)%10]);
}
printf("\n");
printf("%d %d",front,j);
if(count!=1) {
printf("\n");
}
count--;
}
return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)