顺序队列的基本操作

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#include

#include

#include

#include

#define QueueSize 50

typedef char QueueData;

typedef struct queue

{

QueueData data[QueueSize];

int rear,front;

}SeqQueue;

void Menu()

{

printf("\n");

printf("|…………………………………………|\n");

printf("| 1、建立|\n");

printf("| |\n");

printf("| 2、显示|\n");

printf("| |\n");

printf("| 3、入队|\n");

printf("| |\n");

printf("| 4、出队|\n");

printf("| |\n");

printf("| 5、取队头元素|\n");

printf("| |\n");

printf("| 6、退出|\n");

printf("|…………………………………………|\n");

printf("\n");

printf("请选择菜单项,按回车键完成选择:"); }

//模块1 建立

void Set(SeqQueue *&Q)

{

Q=(SeqQueue*)malloc(sizeof(SeqQueue));

if(Q==NULL)

{

printf("存储空间分配失败!\n");

exit(1);

}

else

{

printf("存储空间分配成功!\n");

}

Q->front=Q->rear=-1; //置空队列

int i=0;

printf("请输入数据,按回车键结束:\n");

fflush(stdin);

do

{

Q->rear++;

scanf("%c",&Q->data[i]);

}

while(Q->data[i++]!='\n');

Q->rear=i-1;

}

//模块2 显示

void Show(SeqQueue *Q)

{

int i=0;

for(i=Q->front+1;Q->data[i]!=Q->data[Q->rear];i++) {

printf("%c",Q->data[i]);

}

}

//模块3 判断队空

int Empty(SeqQueue *Q)

{

return Q->rear==Q->front;

}

//模块4 判断队满

int Full(SeqQueue *Q)

{

return (Q->rear+1)%QueueSize==Q->front;

}

//模块5 入队

int In(SeqQueue *Q,QueueData x)

{

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

fflush(stdin);

scanf("%c",&x);

if(Full(Q))

{

return 0;

}

else

{

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

Q->data[Q->rear-1]=x;

return 1;

}

}

//模块6 出队

int Out(SeqQueue *Q,QueueData x)

{

if(Empty(Q))

{

return 0;

}

else

{

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

x=Q->data[Q->front];

printf("出队的元素是:%c\n",x);

return 1;

}

}

//模块7 取队头元素

int FetchFront(SeqQueue *Q,QueueData x)

{

if(Empty(Q))

{

return 0;

}

else

{

x=Q->data[(Q->front+1)%QueueSize];

printf("队头元素是:%c",x);

return 1;

}

}

//模块8 主函数

int main()

{

SeqQueue *Q;

int i,m;

QueueData x;

while(1)

{

system("cls");

Menu();

scanf("%d",&i);

system("cls");

switch(i)

{

case 1:

Set(Q);

m=1;

printf("\n");

system("pause");

break;

case 2:

if(m==1)

{

Show(Q);

printf("\n");

system("pause");

}

else

{

printf("请先建立!\n");

system("pause");

}

break;

case 3:

if(m==1)

{

printf("原始的队列为:");

Show(Q);

printf("\n");

In(Q,x);

printf("现在的队列为:");

Show(Q);

printf("\n");

system("pause");

}

else

{

printf("请先建立!\n");

system("pause");

}

break;

case 4:

if(m==1)

{

printf("原始的队列为:");

Show(Q);

相关文档
最新文档