您的位置:首页 > 其它

链队列的基本操作

2016-02-17 23:36 337 查看
#include<iostream>
using namespace std;

typedef struct Node
{
int data;
Node* next;
};

typedef struct Queue
{
Node* front;
Node* rear;
};

Queue* CreateQueue()
{
Queue* p = (Queue*)malloc(sizeof(Queue));
p->front = NULL;
p->rear = NULL;

return p;
}

void printQueue(Queue *q)
{
if(q->front == NULL)
return;
Node *temp = q->front;
while(temp != NULL)
{
printf("%d \n",temp->data);
temp = temp->next;
}

}
void enQueue(Queue* &q, int elem)
{
Node* temp = (Node*)malloc(sizeof(Node));
temp->data = elem;

if(q->rear == NULL)
{
q->front = temp;
q->rear = temp;
temp->next =NULL;
}
else
{
q->rear->next = temp;
q->rear = temp;
temp->next = NULL;
}

}
int deQueue(Queue* &q)
{
Node *temp;
int retTemp;
if(q->rear == NULL)
return 0;
if(q->front==q->rear)
{
temp = q->front;
q->front = q->rear = NULL;
retTemp = temp->data;
free(temp);
}
else
{
retTemp = q->front->data;
temp = q->front;
q->front = q->front->next;
free(temp);
}
return retTemp;
}
int isEmptyQueue(Queue* q)
{
if(q->front == NULL || q->rear == NULL)
return 1;
else
return 0;
}
int main(int argc, char **argv)
{
Queue *L;
L = CreateQueue();
enQueue(L,1);
enQueue(L,2);
enQueue(L,3);
enQueue(L,4);
printQueue(L);
int temp = deQueue(L);
printf("出队数据:%d\n",temp);
printQueue(L);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: