您的位置:首页 > 理论基础 > 数据结构算法

回顾数据结构(5):队列

2016-11-06 13:36 375 查看


#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>

typedef struct Queue{
int data;
struct Queue *next;
}QNode,*QueuePtr;

typedef struct{
QueuePtr front;
QueuePtr rear;
}LQueue;
//初始化队列
int initQueue(LQueue *q){
q->front = q->rear = (QueuePtr)malloc(sizeof(QNode));
if(!q->front){
return 0;
}
q->front->next=NULL;
return 1;
}
//队列的插入
int enQueue(LQueue *q,int e){
QueuePtr temp;
temp = (QueuePtr)malloc(sizeof(QNode));
if(!temp){
return 0;
}
temp->data = e;
temp->next = NULL;
q->rear->next =temp;
q->rear = temp;
return 1;
}
//队列的删除
int deQueue(LQueue *q,int *e){
QueuePtr temp;
if(q->front==q->rear){
return 0;
}
temp = q->front;
*e= temp->next->data;
q->front = temp->next;
if(q->rear==temp->next ){
q->rear = q->front;
}
free(temp);
return 1;
}
//队列的遍历
int  traverseQueue(LQueue q){
QueuePtr p;
p = q.front->next;
while(p){
printf("%d ",p->data);
p = p->next;
}
return 1;
}
int main(){
LQueue q;
initQueue(&q);
enQueue(&q,1);
enQueue(&q,2);

int e;
deQueue(&q,&e);
deQueue(&q,&e);
deQueue(&q,&e);
deQueue(&q,&e);
enQueue(&q,1);
enQueue(&q,2);
enQueue(&q,1);
enQueue(&q,2);
traverseQueue(q);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息