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

数据结构学习笔记--链队列

2018-04-04 00:30 267 查看
以下是源码//链队列
#include<stdlib.h>
#include<stdio.h>
#include<iostream>
typedef struct QNode
{
int data;
struct QNode *next;
} LNode, *LinkList;

typedef struct
{
LinkList front;
LinkList rear;
}LinkQueue;

int InitQueue(LinkQueue &Q)
{
Q.front=Q.rear=(LinkList)malloc(sizeof(LNode));
if(!Q.front)
exit(-1);
Q.front->next=NULL;
return 1;
}

int QueueEmpty(LinkQueue Q)
{
if(Q.front==Q.rear)
return 1;
else return 0;

}

int EnQueue(LinkQueue &Q,int e)
{
LinkList p=(LinkList)malloc(sizeof(LNode));
if(!p)
exit(-1);
p->data=e;
p->next=NULL;
Q.rear->next=p;
Q.rear=p;
return 1;
}

int DeQueue(LinkQueue &Q,int &e)
{
if(Q.front==Q.rear)
return 0;
LinkList p=Q.front->next;
e=p->data;
Q.front->next=p->next;
if(Q.rear==p)
Q.rear=Q.front;
free(p);
return 1;
}

int main()
{
LinkQueue Q;
int result = InitQueue(Q);
if(result==1)
printf("创建空链列表成功!\n");
if(QueueEmpty(Q)==1)
printf("Q是一个空的链队列!\n");
else
printf("Q是一个非空的链队列!\n");
printf("把10放进队列:\n");
EnQueue(Q,10);
if(QueueEmpty(Q)==1)
printf("Q是一个空的链队列!\n");
else
printf("Q是一个非空的链队列!\n");

printf("把一个元素出队列\n");
int e;
DeQueue(Q,e);
printf("出
4000
队列的元素为%d\n",e);
if(QueueEmpty(Q)==1)
printf("Q是一个空的链队列!\n");
else
printf("Q是一个非空的链队列!\n");

}

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