用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;
}
}
#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;
}
}
相关文章推荐
- 数据结构学习之循环队列的另一种c++实现
- C++数据结构--循环队列的实现
- c++ 数据结构 循环队列
- 计蒜客 数据结构 队列——循环队列 C++
- 数据结构队列C++实现 链式和循环
- 【C++数据结构】数组循环队列的实现
- 【数据结构】用C++编写队列及基本操作(包括插入,出队列,摧毁,清空等等)
- 数据结构队列C++实现 链式和循环
- C++类模板 实现循环队列的顺序存储结构算法 《数据结构》(北京科海) 部分摘抄 自己编写实现
- 【c++版数据结构】之循环队列的实现
- c++ 数据结构 双端(循环)队列
- 数据结构学习之循环队列c++实现
- C++编写利用数据结构中队列(Queue)打印出用户所指定长度的杨辉三角
- 用c++编写的数据结构链式队列
- c++ 数据结构 用循环队列实现杨辉三角形的打印
- 数据结构-队列:循环队列与链队列的C++模板类实现
- C++ 顺序队列与循环队列
- 数据结构之C++实现顺序队列(SeqQueue)(无主函数)
- 【数据结构】双向循环线性表的基本操作--C++/C实现
- 【数据结构】循环队列的实现(c++)