C语言队列的顺序表示
来源:互联网 发布:淘宝复刻鞋店 编辑:程序博客网 时间:2024/05/16 09:46
#include <stdio.h>
#include <stdlib.h>
struct SeQueue{
int MAXNUM;
int f,r;
int *q;
};
typedef struct SeQueue *PSeQueue;
/* 创建空队列*/
PSeQueue creatEmptyQueue_seq(int m)
{
PSeQueue queue=(PSeQueue)malloc(sizeof(struct SeQueue));
if(queue->f!=0||queue->r!=0){
queue->q=(int)malloc(sizeof(int)*m);
if(queue->q){
queue->MAXNUM=m+1;
queue->f=0;
queue->r=0;
return(queue);
}
else free(queue);
}
printf("Out of Space!!!\n");
return NULL;
}
/*判断队列是否为空*/
int isEmptyQueue_seq(PSeQueue paqu)
{
return(paqu->f==paqu->r);
}
/*入队*/
void enQueue_seq(PSeQueue paqu,int x)
{
if((paqu->r+1)%paqu->MAXNUM==paqu->f)
printf("Full queue.\n");
else{
paqu->q[paqu->r]=x;
paqu->r=(paqu->r+1)%paqu->MAXNUM;
}
}
/*出队*/
void deQueue_seq(PSeQueue paqu)
{
if(paqu->f==paqu->r)
printf("Empty quque.\n");
else
paqu->f=(paqu->f+1)%paqu->MAXNUM;
}
/*取队列的头元素*/
int frontQueue_seq(PSeQueue paqu)
{
if(paqu->f==paqu->r)
printf("Empty quque.\n");
else
return(paqu->q[paqu->f]);
}
int main()
{
int m,b=1;
PSeQueue A;
printf("请输入顺序队列的大小:\n");
scanf("%d",&m);
A=creatEmptyQueue_seq(m);
while(b==1){
printf("请选择你要的操作:\n");
printf("1:显示全部数据:\n");
printf("2:入队:\n");
printf("3:出队:\n");
printf("4:取队列顶元素:\n");
int op;
int c,j,k,m1;
scanf("%d",&op);
switch(op){
case 1:
printf("显示全部数据:\n");
j=A->r;
k=A->f;
for(k=0;k<j;k++)
printf("%d ",A->q[k]);
break;
case 2:
printf("入队:\n");
for(m1=0;m1<m;m1++){
printf("请继续输入:\n");
scanf("%d",&c);
enQueue_seq(A,c);
}
break;
case 3:
printf("出队:\n");
printf("%d\n",A->q[A->f]);
deQueue_seq(A);
break;
case 4:
printf("取队列头元素:\n");
frontQueue_seq(A);
printf("%d\n",A->q[A->f]);
}
printf("\n是否需要继续执行此类操作,需要操作请输入“1”,退出输入“0”\n");
scanf("%d",&b);
if(b==0){
printf(" *** 退出执行! ***");
}
}
return 0;
}
#include <stdlib.h>
struct SeQueue{
int MAXNUM;
int f,r;
int *q;
};
typedef struct SeQueue *PSeQueue;
/* 创建空队列*/
PSeQueue creatEmptyQueue_seq(int m)
{
PSeQueue queue=(PSeQueue)malloc(sizeof(struct SeQueue));
if(queue->f!=0||queue->r!=0){
queue->q=(int)malloc(sizeof(int)*m);
if(queue->q){
queue->MAXNUM=m+1;
queue->f=0;
queue->r=0;
return(queue);
}
else free(queue);
}
printf("Out of Space!!!\n");
return NULL;
}
/*判断队列是否为空*/
int isEmptyQueue_seq(PSeQueue paqu)
{
return(paqu->f==paqu->r);
}
/*入队*/
void enQueue_seq(PSeQueue paqu,int x)
{
if((paqu->r+1)%paqu->MAXNUM==paqu->f)
printf("Full queue.\n");
else{
paqu->q[paqu->r]=x;
paqu->r=(paqu->r+1)%paqu->MAXNUM;
}
}
/*出队*/
void deQueue_seq(PSeQueue paqu)
{
if(paqu->f==paqu->r)
printf("Empty quque.\n");
else
paqu->f=(paqu->f+1)%paqu->MAXNUM;
}
/*取队列的头元素*/
int frontQueue_seq(PSeQueue paqu)
{
if(paqu->f==paqu->r)
printf("Empty quque.\n");
else
return(paqu->q[paqu->f]);
}
int main()
{
int m,b=1;
PSeQueue A;
printf("请输入顺序队列的大小:\n");
scanf("%d",&m);
A=creatEmptyQueue_seq(m);
while(b==1){
printf("请选择你要的操作:\n");
printf("1:显示全部数据:\n");
printf("2:入队:\n");
printf("3:出队:\n");
printf("4:取队列顶元素:\n");
int op;
int c,j,k,m1;
scanf("%d",&op);
switch(op){
case 1:
printf("显示全部数据:\n");
j=A->r;
k=A->f;
for(k=0;k<j;k++)
printf("%d ",A->q[k]);
break;
case 2:
printf("入队:\n");
for(m1=0;m1<m;m1++){
printf("请继续输入:\n");
scanf("%d",&c);
enQueue_seq(A,c);
}
break;
case 3:
printf("出队:\n");
printf("%d\n",A->q[A->f]);
deQueue_seq(A);
break;
case 4:
printf("取队列头元素:\n");
frontQueue_seq(A);
printf("%d\n",A->q[A->f]);
}
printf("\n是否需要继续执行此类操作,需要操作请输入“1”,退出输入“0”\n");
scanf("%d",&b);
if(b==0){
printf(" *** 退出执行! ***");
}
}
return 0;
}
0 0
- C语言队列的顺序表示
- 循环队列——队列的顺序表示与实现(c语言)
- 数据结构---C语言之队列的顺序表示和实现(循环队列)
- 队列的顺序表示
- 顺序队列的表示
- C语言队列的链接表示
- C语言 顺序队列
- 顺序循环队列的c语言实现
- 顺序队列的C语言实现
- 《数据结构》队列的顺序表示--循环队列
- C语言 队列的链式结构的实现与表示 数据结构 队列的实现与表示
- C语言 数据结构 线性表的顺序表示
- C语言 数组的顺序表示与实现 数据结构
- 线性表的顺序表示(C语言实现)
- 线性表的顺序表示和实现(C语言描述)
- 线性表的顺序表示及实现(C语言编写)
- 数组的顺序表示和C语言实现
- c语言顺序栈的表示和实现
- iOS学习应用开发就业课_009:UIViewController的使用
- Redis-实现Session同步
- CAShapeLayer + UIBezierPath = sectionView
- Linux防火墙(iptables)关闭与开启配置
- Q_PROPERTY
- C语言队列的顺序表示
- 多核系统中温度隐蔽通道的带宽优化
- volatile用法详解
- 微信开放平台微信登录授权的说明
- IP首部校验和的算法
- 异或运算的意义
- Katu Puzzle poj 3678 kosaraju+2-SAT
- 老外总结的关于Spring Bean Life Cycle 的文档
- iOS近场通信(蓝牙开发,WiFi开发)