队列的链式存储方式
#include<stdio.h>
#include<stdlib.h>
typedef int ElemType;
typedef struct qnode //链式数据节点类型定义
{
ElemType data;
struct qnode *next;
}QNode;
typedef struct //链队类型定义
{
QNode *front;
QNode *rear;
}LiQueue;
//初始化队列
void InitQueue(LiQueue *q){
q=(LiQueue*)malloc(sizeof(LiQueue));
q->front=q->rear=NULL;
}
//进队列
void enQueue(LiQueue *q,ElemType e){
QNode *p;
p=(QNode*)malloc(sizeof(QNode));
p->data=e;
p->next=NULL;
if(q->rear==NULL)
q->front=q->rear=p;
else{
q->rear->next=p;
q->rear=p;
}
}
//出队列
int deQueue(LiQueue *q){
QNode *t;
if(q->rear==NULL)
return 0;
t=q->front;
if(q->front==q->rear)
q->front=q->rear=NULL;
else
q->front=q->front->next;
printf("%d ",t->data);
free(t);
return 1;
}
int main(){
LiQueue *q;
q=(LiQueue*)malloc(sizeof(LiQueue));
q->front=q->rear=NULL;
enQueue(q,5);
enQueue(q,7);
enQueue(q,6);
deQueue(q);
deQueue(q);
printf("\n");
}
本内容由安康学院"雨季"原创!