链式队列
最近数据结构老师要求我们在上机课上要不看书敲出来链式队列并实现功能,所以在此练练手
由于比较简单,所以直接上代码
#include<iostream>
using namespace std;
typedef int datatype;
typedef struct node* pointer;
struct node{
datatype data;
pointer next;
};
typedef struct{
pointer front,rear;
}lkqueue;
void init_lkqueue(lkqueue *lq){//创建链队列
pointer p;
p=new node;
p->next=NULL;
lq->front=p;
lq->rear=p;
}
void enter_lkqueue(lkqueue *lq,datatype x){//入队功能实现
pointer s;
s=new node;
s->data=x;
lq->rear->next=s;
lq->rear=s;
s->next=NULL;
}
int empty_lkqueue(lkqueue *lq){//判断队列是否为空
if(lq->front==lq->rear)return 1;
else return 0;
}
int out_lkqueue(lkqueue *lq,datatype *x){//出队功能实现
pointer s;
if(lq->front==lq->rear){
cout<<"队空,不能出队!"<<endl;
return 0;
}
s=lq->front->next;
*x=s->data;
lq->front->next=s->next;
cout<<"出队元素为"<<*x<<endl;
delete s;
return 1;
}
int main(){
lkqueue *lq;
lq=new lkqueue;
datatype *x;
x=new datatype;
init_lkqueue(lq);
empty_lkqueue(lq);
enter_lkqueue(lq,100);
empty_lkqueue(lq);
out_lkqueue(lq,x);
empty_lkqueue(lq);
return 0;
}