int en_queue_2(QUEUE *pQ, char *str)
//入队前判断队列是否已满
{
int tmp = 0,s_tmp = 0,i,j;
int rv[100],sum[100];
int m = strlen(str);
// int m = len - 1;
int k = -1;
int jude = -100;//便于之后排序定义的临时变量
int MAX = 1024;
for (i = 0; i < m ; i++)
{
rv[i] = str[i] - '0';
}
for (i = 0; i < len; i++)
{
for (j = count; j < m; j++)
{
if (pQ->pBase[i] == rv[j])
{
k = k + 1;
jude = k;
sum[k] = j - i;//记录队列中每个元素与带入队一系列匹配元素的距离
break;
}
}
if (jude != k)
{
k = k + 1;
sum[k] = MAX--;//如果队列中元素未匹配即将入队的其他元素则把记录该元素的距离置为比较大的一个数
}
jude = -100;//重新置为-100
}
count = count + 1;//全局变量加1,便于下一次移动整个页面走向
//
for (i = 0; i < len; i++)
{
for (j = i + 1; j < len; j++)
{
if (sum[i] < sum[j])//根据上述计算出来距离来对队列中元素进行降序排序
{
s_tmp = sum[i];
sum[i] = sum[j];
sum[j] = s_tmp;
tmp = pQ->pBase[i];
pQ->pBase[i] = pQ->pBase[j];
pQ->pBase[j] = tmp;
}
}
}
return 1;
}
int empty_queue(QUEUE *pQ)
{
int N = len + 1;
if (pQ->front == pQ->rear)
return 1;
else
return 0;
}
int out_queue(QUEUE *pQ, int *pVal)//出队前判断队列是否为空
{
int m = len - 1;
int i = 0;
if (empty_queue(pQ))
{
return 0;
}
*pVal = pQ->pBase[0]; //把出队的元素保存起来,此时固定每次都是出队首元素
// int m = len - 1;
for (i = 0; i < m; i++)
{
pQ->pBase[i] = pQ->pBase[i + 1];//队列中元素前移
}
return 1;
}
int in_queue(QUEUE *pQ, int val)
{
int m = pQ->rear - 1;
pQ->pBase[m] = val; //队列中元素被替换,根据主函数的判断此时m值固定
return 1;
}
{
int tmp = 0,s_tmp = 0,i,j;
int rv[100],sum[100];
int m = strlen(str);
// int m = len - 1;
int k = -1;
int jude = -100;//便于之后排序定义的临时变量
int MAX = 1024;
for (i = 0; i < m ; i++)
{
rv[i] = str[i] - '0';
}
for (i = 0; i < len; i++)
{
for (j = count; j < m; j++)
{
if (pQ->pBase[i] == rv[j])
{
k = k + 1;
jude = k;
sum[k] = j - i;//记录队列中每个元素与带入队一系列匹配元素的距离
break;
}
}
if (jude != k)
{
k = k + 1;
sum[k] = MAX--;//如果队列中元素未匹配即将入队的其他元素则把记录该元素的距离置为比较大的一个数
}
jude = -100;//重新置为-100
}
count = count + 1;//全局变量加1,便于下一次移动整个页面走向
//
for (i = 0; i < len; i++)
{
for (j = i + 1; j < len; j++)
{
if (sum[i] < sum[j])//根据上述计算出来距离来对队列中元素进行降序排序
{
s_tmp = sum[i];
sum[i] = sum[j];
sum[j] = s_tmp;
tmp = pQ->pBase[i];
pQ->pBase[i] = pQ->pBase[j];
pQ->pBase[j] = tmp;
}
}
}
return 1;
}
int empty_queue(QUEUE *pQ)
{
int N = len + 1;
if (pQ->front == pQ->rear)
return 1;
else
return 0;
}
int out_queue(QUEUE *pQ, int *pVal)//出队前判断队列是否为空
{
int m = len - 1;
int i = 0;
if (empty_queue(pQ))
{
return 0;
}
*pVal = pQ->pBase[0]; //把出队的元素保存起来,此时固定每次都是出队首元素
// int m = len - 1;
for (i = 0; i < m; i++)
{
pQ->pBase[i] = pQ->pBase[i + 1];//队列中元素前移
}
return 1;
}
int in_queue(QUEUE *pQ, int val)
{
int m = pQ->rear - 1;
pQ->pBase[m] = val; //队列中元素被替换,根据主函数的判断此时m值固定
return 1;
}