2018/2/13
算法
1.队列
队列,是一种只允许从对首(head)进行删除("出队"),从对尾(tail)进行增加("入队")的特殊线性表
2.几种基本操作
1.设置队头head和队尾tail
2.删除队头则head++,队尾假如数字则tail++
3.采用while循环来循环增减数字
/*假设给一个练习:一串数字631758924,将第一个数删除,第二个数放在末尾,再将第三个数删除,第四个数放在末尾,然后打印出删除数的顺序*/
#include<stdio.h>
#include<stdlib.h>
/*1.普通队列*/
/*void main()
{
int a[20] = { 6,3,1,7,5,8,9,2,4 },head,tail;//设置数组,队列得头和尾
head = 0;
tail = 9;
printf("正确答案是\n");
while (head < tail)
{
//因为每次打印并删除队首
printf("%d", a[head]);
head++;//将首位置向后推,相当于将队首出队
a[tail] = a[head];//将新的队首改到对尾
tail++;
head++;//再一次删除队首
}
system("pause");
}*/
/*2.结构体队列*/
typedef struct quene
{
int data[20];
int head;//队首
int tail;//队尾
}quene;
int main()
{
int i;
quene q;
q.head = 0;
q.tail = 0;
for (i = 0; i < 9; i++)
{
scanf_s("%d", &q.data[q.tail]);//入队
q.tail++;
}
while (q.head < q.tail)
{
printf("%3d",q.data[q.head] );
q.head++;//出队
q.data[q.tail] = q.data[q.head];
q.tail++;
q.head++;
}
system("pause");
}