#include <stdio.h>
#include <stdlib.h>
#define SIZE 100
typedef struct node
{
int *base;
int front;
int rear;
}Node;
int InitNode(Node *p)
{
p->base=(int *)malloc(SIZE*sizeof(int));
if(!p->base)
return 0;
p->front=p->rear=0;
return 1;
}
int insert(Node *p,int e)
{
if((p->rear+1)%SIZE==p->front)
{
printf("队列已满,插入失败!!\n");
return 0;
}
else
{
p->base[p->rear]=e;
p->rear=(p->rear+1)%SIZE;
}
return 1;
}
int delelem(Node *p)
{
if(p->front==p->rear)
{
printf("队列为空,删除失败!!!\n");
return 0;
}
else
p->front=(p->front+1)%SIZE;
return 1;
}
int getHead(Node *p)
{
if(p->front==p->rear)
{
printf("队列为空!!");
exit(0);
}
else
return p->base[p->front];
}
void clear(Node *p)
{
p->rear=p->front=0;
if(p->rear==0&&p->front==0)
printf("队列已清空!!\n");
}
void print(Node *p)
{
int s;
if(p->rear==p->front)
{
printf("队列为空!!\n");
exit(0);
}
s=p->front;
printf("队列中各元素如下:\n");
while(s!=p->rear)
{
printf("%d ",p->base[s]);
s++;
}
printf("\n");
}
int main()
{
Node p;
int m,i,a,b;
InitNode(&p);
printf("请输入队列的长度:");
scanf("%d",&m);
printf("请输入%d个元素:\n",m);
for(i=0;i<m;i++)
{
scanf("%d",&a);
insert(&p,a);
}
print(&p);
b=getHead(&p);
printf("队首元素:%d\n",b);
delelem(&p);
printf("删除队首元素后,");
print(&p);
clear(&p);
return 0;
}
C语言队列的基本操作
最新推荐文章于 2024-04-23 22:47:51 发布