//front指向队列的队头元素,rear指向队尾元素的下一个。因为链式队列有头节点,顺序队列没得头节点
//为了判断是否未满,最后一个空间不放元素
#include <stdio.h>
#include <stdlib.h>
#define MAX 100
struct book
{
int isbn;
char name[32];
};
typedef struct node
{
struct book b[MAX];
int rear;
int front;
}sqqueue;
int is_empty_sqqueue(sqqueue sq);
int is_full_sqqueue(sqqueue sq);
void Insert_Sqqueue(sqqueue *sq, struct book data);
void Print_Sqqueue(sqqueue sq);
void Delete_Sqqueue(sqqueue *sq);
void menu(void);
int main(void)
{
struct book data;
int choice;
int ret;
sqqueue sq;
sq.rear = sq.front = 0;
menu();
while(1)
{
printf("please input a chocie:\n");
scanf("%d",&choice);
switch(choice)
{
case 0:
exit(1);
case 1:
while(1)
{
printf("please input isbn and name:\n");
scanf("%d%s", &data.isbn, data.name);
if(data.isbn == -1)
{
break;
}
Insert_Sqqueue(&sq,data);
}
break;
case 2:
Print_Sqqueue(sq);
break;
case 3:
Delete_Sqqueue(&sq);
break;
case 4:
ret = is_empty_sqqueue(sq);
if(ret == 1)
printf("the sqqueue is empty\n");
else
printf("the sqqueue is not empty\n");
break;
case 5:
ret = is_full_sqqueue(sq);
if(ret == 1)
printf("the sqqueue is full\n");
else
printf("the sqqueue is not full\n");
break;
default:
break;
}
}
return 0;
}
void Delete_Sqqueue(sqqueue *sq)
{
int ret;
ret = is_empty_sqqueue(*sq);
if(ret == 1)
{
printf("empty sqqueue\n");
return ;
}
sq->front++;
}
void menu(void)
{
printf("1->Insert_Sqqueue\n");
printf("2->Print_Sqqueue\n");
Printf("3->Delete_Sqqueue\n");
printf("4->is_empty_sqqueue\n");
printf("5->is_full_sqqueue\n");
}
int is_empty_sqqueue(sqqueue sq)
{
if(sq.rear == sq.front) //队列空的条件
return 1;
else
return 0;
}
int is_full_sqqueue(sqqueue sq)
{
if((sq.rear + 1) % MAX == sq.front) //队列满的条件
return 1;
else
return 0;
}
void Print_Sqqueue(sqqueue sq)
{
while(1)
{
printf("%d\t%s\n",sq.b[sq.front].isbn, sq.b[sq.front].name);
sq.front++;
if(sq.front == sq.rear)
break;
}
}
void Insert_Sqqueue(sqqueue *sq, struct book data)
{
int ret;
ret = is_full_sqqueue(*sq);
if(ret == 1)
{
printf("sqqueue full\n");
return ;
}
sq->b[sq->rear] = data;
sq->rear ++;
}
C语言实现顺序队列的基本功能
最新推荐文章于 2024-01-31 17:00:00 发布