队列的入队,出队。显示队中元素是指怎么样的操作?
展开全部
我正好写了一个,一点分都没有,太打击我的积极性 了
#include<iostream>
#include<malloc.h>
using namespace std;
typedef struct qnode{ //存储结构
int data;
struct qnode *next;
}qnode,*queueptr;
typedef struct {
queueptr front ;
queueptr rear;
}linkqueue;
int initqueue(linkqueue &q) //建立空队列
{
q.rear =q.front =(queueptr)malloc(sizeof(qnode));
q.front ->next =0;
return 1;
}
int enqueue(linkqueue &q,int e) //插入元素
{
queueptr p;
p=(queueptr)malloc(sizeof(qnode));
p->data =e; p->next =0;
q.rear ->next =p;q.rear =p;
return 1;
}
int dequeue(linkqueue &q,int &e) //删除队列的尾元素
{
queueptr p;
p=(queueptr)malloc(sizeof(qnode));
p=q.front ->next ;
e=p->data ;
q.front ->next =p ->next ;
if(q.rear ==p)q.rear =q.front ;
free(p);
return 1;
}
int creatqueue(linkqueue &q,int n) //构造一个含n个元素的队列
{
int i=1,e=0;
for(;i<=n;i++)
{
cin>>e;
enqueue(q,e);
}
return 1;
}
int destoyqueue(linkqueue &q) // 销毁队列
{
while(q.front )
{
q.rear =q.front ->next ;
free(q.front );
q.front =q.rear ;
}
return 1;
}
int print(linkqueue q) //打印
{
int e=0;
while(q.rear!=q.front){
dequeue(q,e);cout<<e<<" ";
}
return 1;
}
void main()
{
int e=0;
linkqueue q;
initqueue(q);
creatqueue(q,5);
print(q);
cout<<endl;
dequeue(q,e);cout<<e<<" ";
print(q);
cout<<endl;
destoyqueue(q);
}
你自己稍微调试一下吧.是用的是链队列的表示方法
#include<iostream>
#include<malloc.h>
using namespace std;
typedef struct qnode{ //存储结构
int data;
struct qnode *next;
}qnode,*queueptr;
typedef struct {
queueptr front ;
queueptr rear;
}linkqueue;
int initqueue(linkqueue &q) //建立空队列
{
q.rear =q.front =(queueptr)malloc(sizeof(qnode));
q.front ->next =0;
return 1;
}
int enqueue(linkqueue &q,int e) //插入元素
{
queueptr p;
p=(queueptr)malloc(sizeof(qnode));
p->data =e; p->next =0;
q.rear ->next =p;q.rear =p;
return 1;
}
int dequeue(linkqueue &q,int &e) //删除队列的尾元素
{
queueptr p;
p=(queueptr)malloc(sizeof(qnode));
p=q.front ->next ;
e=p->data ;
q.front ->next =p ->next ;
if(q.rear ==p)q.rear =q.front ;
free(p);
return 1;
}
int creatqueue(linkqueue &q,int n) //构造一个含n个元素的队列
{
int i=1,e=0;
for(;i<=n;i++)
{
cin>>e;
enqueue(q,e);
}
return 1;
}
int destoyqueue(linkqueue &q) // 销毁队列
{
while(q.front )
{
q.rear =q.front ->next ;
free(q.front );
q.front =q.rear ;
}
return 1;
}
int print(linkqueue q) //打印
{
int e=0;
while(q.rear!=q.front){
dequeue(q,e);cout<<e<<" ";
}
return 1;
}
void main()
{
int e=0;
linkqueue q;
initqueue(q);
creatqueue(q,5);
print(q);
cout<<endl;
dequeue(q,e);cout<<e<<" ";
print(q);
cout<<endl;
destoyqueue(q);
}
你自己稍微调试一下吧.是用的是链队列的表示方法
展开全部
我正好写了一个,一点分都没有,太打击我的积极性
了
#include<iostream>
#include<malloc.h>
using
namespace
std;
typedef
struct
qnode{
//存储结构
int
data;
struct
qnode
*next;
}qnode,*queueptr;
typedef
struct
{
queueptr
front
;
queueptr
rear;
}linkqueue;
int
initqueue(linkqueue
&q)
//建立空队列
{
q.rear
=q.front
=(queueptr)malloc(sizeof(qnode));
q.front
->next
=0;
return
1;
}
int
enqueue(linkqueue
&q,int
e)
//插入元素
{
queueptr
p;
p=(queueptr)malloc(sizeof(qnode));
p->data
=e;
p->next
=0;
q.rear
->next
=p;q.rear
=p;
return
1;
}
int
dequeue(linkqueue
&q,int
&e)
//删除队列的尾元素
{
queueptr
p;
p=(queueptr)malloc(sizeof(qnode));
p=q.front
->next
;
e=p->data
;
q.front
->next
=p
->next
;
if(q.rear
==p)q.rear
=q.front
;
free(p);
return
1;
}
int
creatqueue(linkqueue
&q,int
n)
//构造一个含n个元素的队列
{
int
i=1,e=0;
for(;i<=n;i++)
{
cin>>e;
enqueue(q,e);
}
return
1;
}
int
destoyqueue(linkqueue
&q)
//
销毁队列
{
while(q.front
)
{
q.rear
=q.front
->next
;
free(q.front
);
q.front
=q.rear
;
}
return
1;
}
int
print(linkqueue
q)
//打印
{
int
e=0;
while(q.rear!=q.front){
dequeue(q,e);cout<<e<<"
";
}
return
1;
}
void
main()
{
int
e=0;
linkqueue
q;
initqueue(q);
creatqueue(q,5);
print(q);
cout<<endl;
dequeue(q,e);cout<<e<<"
";
print(q);
cout<<endl;
destoyqueue(q);
}
你自己稍微调试一下吧.是用的是链队列的表示方法
了
#include<iostream>
#include<malloc.h>
using
namespace
std;
typedef
struct
qnode{
//存储结构
int
data;
struct
qnode
*next;
}qnode,*queueptr;
typedef
struct
{
queueptr
front
;
queueptr
rear;
}linkqueue;
int
initqueue(linkqueue
&q)
//建立空队列
{
q.rear
=q.front
=(queueptr)malloc(sizeof(qnode));
q.front
->next
=0;
return
1;
}
int
enqueue(linkqueue
&q,int
e)
//插入元素
{
queueptr
p;
p=(queueptr)malloc(sizeof(qnode));
p->data
=e;
p->next
=0;
q.rear
->next
=p;q.rear
=p;
return
1;
}
int
dequeue(linkqueue
&q,int
&e)
//删除队列的尾元素
{
queueptr
p;
p=(queueptr)malloc(sizeof(qnode));
p=q.front
->next
;
e=p->data
;
q.front
->next
=p
->next
;
if(q.rear
==p)q.rear
=q.front
;
free(p);
return
1;
}
int
creatqueue(linkqueue
&q,int
n)
//构造一个含n个元素的队列
{
int
i=1,e=0;
for(;i<=n;i++)
{
cin>>e;
enqueue(q,e);
}
return
1;
}
int
destoyqueue(linkqueue
&q)
//
销毁队列
{
while(q.front
)
{
q.rear
=q.front
->next
;
free(q.front
);
q.front
=q.rear
;
}
return
1;
}
int
print(linkqueue
q)
//打印
{
int
e=0;
while(q.rear!=q.front){
dequeue(q,e);cout<<e<<"
";
}
return
1;
}
void
main()
{
int
e=0;
linkqueue
q;
initqueue(q);
creatqueue(q,5);
print(q);
cout<<endl;
dequeue(q,e);cout<<e<<"
";
print(q);
cout<<endl;
destoyqueue(q);
}
你自己稍微调试一下吧.是用的是链队列的表示方法
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询