|  | 
 
| 
# define MAXSIZEQ 100
x
马上注册,结交更多好友,享用更多功能^_^您需要 登录 才可以下载或查看,没有账号?立即注册  typedef struct{
 int *base;
 int front;
 int rear;
 }SQueue;
 
 void initQ(SQueue *Q)   //初始化队元素。
 {
 Q->base=(int*)malloc(MAXSIZEQ*sizeof(int));
 if(!Q->base)
 {
 printf("空间无法正常分配,对不起哦~\n");
 }
 Q->front=Q->rear=0;
 }
 
 void creatQ(SQueue *Q)   //创建队元素
 {
 int n,i;
 printf("请输入您要创建的元素个数:");
 scanf("%d",&n);
 if((Q->rear+1)%MAXSIZEQ==Q->front)
 {
 printf("该队已满了哦,你不可以插入了哦~\n");
 }
 for(i=0;i<n;i++)
 {
 printf("请输入第%d个元素:",i+1);
 scanf("%d",&Q->base[Q->rear]);
 Q->rear=(Q->rear+1)%MAXSIZEQ;
 }
 }
 
 void showQ(SQueue *Q)   //显示队元素
 {
 int i;
 if(Q->front==Q->rear)
 {
 printf("不可以出队了哦 此时队空~\n");
 }
 for(i=0;i<(Q->rear-Q->front+MAXSIZEQ)%MAXSIZEQ;i++)
 {
 printf("%d ",Q->base[Q->front]);
 Q->front=(Q->front+1)%MAXSIZEQ;
 }
 printf("\n");
 }
 
 int lengthQ(SQueue *Q) //打印队长
 {
 int n;
 n=(Q->rear-Q->front+MAXSIZEQ)%MAXSIZEQ;
 printf("您的队长为:%d\n",n);
 return 0;
 }
 
 void isempty(SQueue *Q) //判断是否是空队列
 {
 if(Q->rear==Q->front)
 printf("此时队列是空的哦~\n");
 else
 printf("此时队列不为空哦~\n");
 }
 
 void destroyQ(SQueue *Q)  //销毁该队列
 {
 free(Q->base);
 Q->front=Q->rear=0;
 printf("此时队列已经被销毁了哦~\n");
 }
 
 void getQ(SQueue *Q)  //查看队头元素
 {
 int e;
 e=Q->base[Q->front];
 printf("您的队头元素是:%d\n",e);
 }
 
 
 void enQ(SQueue *Q) // 进队
 {
 int e;
 if((Q->rear+1)%MAXSIZEQ==Q->front)
 printf("此时队满了哦,不可以再进队了~\n");
 else
 {
 printf("请写入您需要进队的元素内容:");
 scanf("%d",&e);
 Q->base[Q->rear]=e;
 Q->rear=(Q->rear+1)%MAXSIZEQ;
 }
 }
 
 void deQ(SQueue *Q)//出队
 {
 if(Q->rear==Q->front)
 printf("此时队空了哦,不可以再出队了~\n");
 else
 {
 printf("您的出队元素内容为:%d\n",Q->base[Q->front]);
 Q->front=(Q->front+1)%MAXSIZEQ;
 }
 }
 
 
 
 
 
 int main()
 {
 SQueue Q;
 initQ(&Q);
 creatQ(&Q);
 lengthQ(&Q);
 //isempty(&Q);
 //destroyQ(&Q);
 //creatQ(&Q);
 //getQ(&Q);
 enQ(&Q);
 lengthQ(&Q);
 //getQ(&Q);
 enQ(&Q);
 lengthQ(&Q);
 deQ(&Q);
 lengthQ(&Q);
 printf("您此时队中的元素为:");
 showQ(&Q);
 //lengthQ(&Q);
 //isempty(&Q);
 return 0;
 }
 
复制代码#include <stdio.h>
#include <stdlib.h>
# define MAXSIZEQ 100
typedef struct{
        int *base;
        int front;
        int rear;
}SQueue;
void initQ(SQueue *Q)   //初始化队元素。
{
        Q->base=(int*)malloc(MAXSIZEQ*sizeof(int));
        if(!Q->base)
        {
                printf("空间无法正常分配,对不起哦~\n");
        }
        Q->front=Q->rear=0;
}
void creatQ(SQueue *Q)   //创建队元素
{
        int n,i;
        printf("请输入您要创建的元素个数:");
        scanf("%d",&n);
                if(Q->base) // 内存没有被销毁
                {
                        for(i=0;i<n;i++)
                        {               
                                                        if((Q->rear+1)%MAXSIZEQ==Q->front)
                                        {
                                                printf("该队已满了哦,你不可以插入了哦~\n");
                                                break;
                                        }
                                        printf("请输入第%d个元素:",i+1);
                                        scanf("%d",&Q->base[Q->rear]);
                                        Q->rear=(Q->rear+1)%MAXSIZEQ;
                
                                
                        }
                }
                else
                {
                        printf("队列已被销毁!\n");
                }
}
void showQ(SQueue *Q)   //显示队元素
{
        int i, len;
        if(Q->front==Q->rear)
        {
                printf("不可以出队了哦 此时队空~\n");
        }
                len = (Q->rear - Q->front + MAXSIZEQ ) % MAXSIZEQ;
        for(i=0; i < len ;i++) // 你这之 Q->front这里也在 +
        {
                printf("%d ",Q->base[Q->front]);
                Q->front=(Q->front+1)%MAXSIZEQ; // Q->front这里也在 +
        }
        printf("\n");
}
int lengthQ(SQueue *Q) //打印队长
{
        int n;
        n=(Q->rear-Q->front+MAXSIZEQ)%MAXSIZEQ;
        printf("您的队长为:%d\n",n);
        return 0;
}
void isempty(SQueue *Q) //判断是否是空队列
{
        if(Q->rear==Q->front)
                printf("此时队列是空的哦~\n");
        else
                printf("此时队列不为空哦~\n");
}
void destroyQ(SQueue *Q)  //销毁该队列
{
        free(Q->base);
        Q->front=Q->rear=0;
        printf("此时队列已经被销毁了哦~\n");
}
void getQ(SQueue *Q)  //查看队头元素
{
        int e;
        e=Q->base[Q->front];
        printf("您的队头元素是:%d\n",e);
}
void enQ(SQueue *Q) // 进队
{
        int e;
        if((Q->rear+1)%MAXSIZEQ==Q->front)
                printf("此时队满了哦,不可以再进队了~\n");
        else
        {
                printf("请写入您需要进队的元素内容:");
                scanf("%d",&e);
                Q->base[Q->rear]=e;
                Q->rear=(Q->rear+1)%MAXSIZEQ;
        }
}
void deQ(SQueue *Q)//出队
{
        if(Q->rear==Q->front)
                printf("此时队空了哦,不可以再出队了~\n");
        else
        {
                printf("您的出队元素内容为:%d\n",Q->base[Q->front]);
                Q->front=(Q->front+1)%MAXSIZEQ;
        }
}
int main()
{
        SQueue Q;
        initQ(&Q);
        creatQ(&Q);
        lengthQ(&Q);
        //isempty(&Q);
        //destroyQ(&Q);
        //creatQ(&Q);
        //getQ(&Q);
        enQ(&Q);
        lengthQ(&Q);
        //getQ(&Q);
        enQ(&Q);
        lengthQ(&Q);
        deQ(&Q);
        lengthQ(&Q);
        printf("您此时队中的元素为:");
        showQ(&Q);
        //lengthQ(&Q);
        //isempty(&Q);
        return 0;
}
 | 
 
  |