您的位置:首页 > 理论基础 > 数据结构算法

用c++编写的数据结构循环队列

2010-04-05 10:54 281 查看
已经在vc上调试过了

#include<iostream.h>

#include<stdio.h>

#include<malloc.h>

#define DATATYPE1 int

#define MAXSIZE 5

typedef struct

{

DATATYPE1 data[MAXSIZE];

int front,rear;

}SEQQUEUE;

//初始化队列

void initqueue(SEQQUEUE *q)

{

q->rear=q->front=0;

}

//判队列空函数

int empty(SEQQUEUE *q)

{

if(q->rear==q->front)

return 1;

else

return 0;

}

//取队头元素

DATATYPE1 getfront(SEQQUEUE *q,DATATYPE1 v)

{

if(empty(q))

{printf("队列为空./n");

v=NULL;}

else

v=q->data[(q->front+1)%MAXSIZE];

return v;

}

//队尾插入元素

int enqueue(SEQQUEUE *q,DATATYPE1 x)

{

int r;

if(q->front==(q->rear+1)%MAXSIZE)

{printf("队列已满!/n");

r=0;}

else

{q->rear=(q->rear+1)%MAXSIZE;

(q->data)[q->rear]=x;

r=1;}

return r;

}

//队头删除元素

DATATYPE1 dequeue(SEQQUEUE *q)

{

DATATYPE1 v;

if(empty(q))

{printf("队列为空./n");

v=NULL;}

else

{q->front=(q->front+1)%MAXSIZE;

v=(q->data)[q->front];}

return v;

}

void main()

{

int i,x,y;

SEQQUEUE *q=(SEQQUEUE *)malloc(sizeof(SEQQUEUE));

inintqueue(q);

cout<<"请选择:1.取队头元素 2.队尾插入元素 3.队头删除元素 0.退出"<<endl;

cin>>i;

while(i!=0)

{

if(i==1)

{

x=getfront(q,x);

if(x==0)

cout<<"取队头元素失败!"<<endl;

else

cout<<"取队头元素成功!其值为:"<<x<<endl;

}

if(i==2)

{

cout<<"请输入要插入的数:"<<endl;

cin>>x;

if(enqueue(q,x))

cout<<"队尾插入元素成功!其值为:"<<x<<endl;

else

cout<<"队尾插入元素失败!"<<endl;

}

if(i==3)

{

if(dequeue(q))

cout<<"删除成功!"<<endl;

else

cout<<"删除失败!"<<endl;

}

cout<<"请选择:1.取队头元素 2.队尾插入元素 3.队头删除元素 0.退出"<<endl;

cin>>i;

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: