队列链式存储结构上的基本操作
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、链队列存储结构
typedef struct node{
elemtype data;
struct node *next;
}qnode;
typedef struct{
qnode *front;
qnode *rear;
}linkqueue;
二、基本操作的算法实现:
1.构建一个空的链队列
void initqueue(linkqueue *q ) {
q->front=q->rear=(qnode *)malloc(sizeof(qnode));
q->front->next=NULL;
}
2.进队列
void enqueue(linkqueue *q,elemtype e){
p=(qnode *)malloc(sizeof(qnode));
p->data=e;
p->next=NULL;
q->rear->next=p;
q->rear=p; }
3.出队列
status dequeue(linkqueue *q,elemtype e){ p=q->front->next;
e=p->data;
q->front->next=p->next;
if(q->rear==p) q->rear=q->front;
free(p);
return e; }