【文件属性】:
文件名称:c语言简单队列
文件大小:1KB
文件格式:RAR
更新时间:2019-05-13 03:26:01
c语言 简单队列
#include
#include
#include
//队列最大长度
#define MAX_QUEUE 1024
//偷懒,就用静态队列了
static int mQueue[MAX_QUEUE];
//队列插入
void
InsertData(int **Front, int **Rear)
{
if (*Rear + 1 == *Front
&& (*Rear + 1 - MAX_QUEUE != *Front)) {
//当队列数据已满,返回
puts("Queue Size Overflow!\n");
return;
} else if (*Rear - mQueue > MAX_QUEUE) {
//实现的是类似循环队列,但由于是静态线性队列(数组)
//而不是用链表来实现的,所以到静态队列(数组)尾部,尾指针自动指向(数组)头部
*Rear = mQueue;
}
puts("Input Data:");
scanf("%d", *Rear);
//输入数据后,尾指针后移
*Rear += 1;
}
//从头指针删除一个队列中的数据
void
DeleteData(int **Front, int **Rear)
{
if (*Front == *Rear) {
//头指针尾指针重合,队列空,不能删除,返回
puts("Queue Empty!\n");
return;
} else if (*Front - mQueue > MAX_QUEUE) {
//参考 Rear
*Front = mQueue;
}
//从头指针删除一个数据
*Front += 1;
}
//显示队列数据
void
ShowData(int **Front, int **Rear)
{
int *temp;
for (temp=*Front; temp!=*Rear; temp++) {
printf("%d --> ", *temp);
}
puts("\n");
}
void
usage(void)
{
puts("1. Insert Data");
puts("2. Delete Data");
puts("3. Show Data");
}
int
main(int argc, char **argv)
{
//头指针,尾指针
//队列的一个特性 First in first out FIFO
int *pFront, *pRear;
int op_code;
//初始化队列,头指针和尾指针此时指向的地址相同
pFront = pRear = mQueue;
while (1) {
usage();
scanf("%d", &op_code);
switch (op_code) {
case 1:
printf("%p\n", pFront);
printf("%d\n", *pFront);
InsertData(&pFront, &pRear);
break;
case 2:
DeleteData(&pFront, &pRear);
break;
case 3:
ShowData(&pFront, &pRear);
break;
default:
break;
}
}
return 0;
}
【文件预览】:
Queue.c
README.txt