欢迎光临散文网 会员登陆 & 注册

数据结构

2023-05-15 18:07 作者:小梁仙气飘飘  | 我要投稿

#include<stdio.h>

#include<stdlib.h>


#define OVERFLOW -2

#define OK 1

#define ERROR 0

#define MAXQSIZE 100


typedef struct

int *elem;

int front;

int rear;

}SqQueue;


int InitQueue(SqQueue *Q)//队列初始化

{

Q->elem=(int*)malloc(MAXQSIZE*sizeof(int));

if(!Q->elem)return(OVERFLOW);

Q->rear=Q->front=0;

return OK;}


int EnQueue(SqQueue *Q,int e)//入队操作

{if((Q->rear+1)%MAXQSIZE==Q->front)return ERROR;

Q->elem[Q->rear]=e;

Q->rear=(Q->rear+1)%MAXQSIZE;

return OK;

}



int DeQueue(SqQueue *Q,int *e)//出队操作

{

if(Q->front==Q->rear)return ERROR;

*e=Q->elem[Q->front];

Q->front=(Q->front+1)%MAXQSIZE;

return OK;

}



int QueueLength(SqQueue Q)//实现计算队列中元素的操作

{

return(Q.rear-Q.front+MAXQSIZE)%MAXQSIZE;

}



void Display(SqQueue Q)//实现显示队列中元素的操作

{

int i;

if(Q.rear>Q.front)

{for (i=Q.front;i<Q.rear;i++)

printf("\t%d",Q.elem[i]);

};


if(Q.rear<Q.front)

{for(i=Q.front;i<MAXQSIZE;i++)

printf("\t%d",Q.elem[i]);

};

printf("\n");

}


void main()

{ int e;

SqQueue Q;

InitQueue(&Q);

printf("创建队列,请输入队列元素(以0结束);\n");

scanf("%d",&e);

while(e!=0)

{

EnQueue(&Q,e);

scanf("%d",&e);

}

printf("\n");

printf("目前队列中的元素:\n");

Display(Q);

printf("\n");

printf("请输入要入列的元素:");

scanf("%d",&e);

EnQueue(&Q,e);

printf("\n");

printf("执行入列操作后,队列中的元素为:\n");

Display(Q);

DeQueue(&Q,&e);


printf("\n");

printf("队头出队,删除的元素:\n");

printf("%d\n",e);

printf("\n");

printf("执行出队操作后,队列中的元素:\n");

Display(Q);

printf("\n");

printf("队列的长度");

printf("\t%d\n",QueueLength(Q));

return;

}



数据结构的评论 (共 条)

分享到微博请遵守国家法律