队列的顺序存储结构算法——C语言版
队列包括栈的头尾指针就是形象的指针,并不是实际的指针
进队:头指针不动,尾指针变化,这是因为队列入队是头不变一直是尾巴变
代码实现:
#include<stdio.h>
#include<stdlib.h>
#define MaxSize 10
typedef struct A
{
int data[MaxSize];
int font, rear;
}A;
void chushihua(A& a)
{
a.rear = a.font = 0;
}
bool panduan(A& a)
{
if (a.font == a.rear) return true;
else return false;
}
//增
bool charu(A& a,int r)
{
if ((a.rear+1)%MaxSize==a.font)return false;
a.data[a.rear] = r;
//a.rear++;
a.rear=(a.rear + 1) % MaxSize;
return true;
}
//删
bool chudui(A& a, int &t)
{
if (a.rear == a.font)return false;
t = a.data[a.font];
a.font = (a.font + 1) % MaxSize;//这样才可以让front指针转着圈圈移动
return true;
}
//查
bool cha(A a, int &f)
{
if (a.font == a.rear)return false;
f = a.data[a.font];
return true;
}
//查找一共有多少个元素
int zonggong(A a)
{
return (a.rear + MaxSize - a.font) % MaxSize;
}
int main()
{
A a;
chushihua(a);
for (int i = 1; i < 11; i++)
{
/*if (panduan(a)) printf("表是空的\n");
else printf("表不是空的\n");*/
if (charu(a,i)) printf("插入成功\n");
else printf("队满了\n");
}
int zong = zonggong(a);
printf("%d\n", zong);
int f = 0;
if (cha(a,f)) printf("%d\n",f);
int t = 0;
if (chudui(a,t)) printf("出队了:%d\n",t);
if (chudui(a, t)) printf("出队了:%d\n", t);
if (chudui(a, t)) printf("出队了:%d\n", t);
for (int i = 101; i < 105; i++)
{
/*if (panduan(a)) printf("表是空的\n");
else printf("表不是空的\n");*/
if (charu(a, i)) printf("插入成功\n");
else printf("队满了\n");
}
return 0;
}