数据结构学习笔记--链队列
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");
}
#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");
}
相关文章推荐
- 数据结构学习笔记(特殊的线性表:栈与队列)
- 数据结构学习笔记(四)之表、栈和队列
- 数据结构学习笔记(9.栈和队列的特殊实现)
- 数据结构学习笔记——栈和队列
- 数据结构学习笔记(5)---静态与动态队列
- 数据结构学习笔记(8.循环队列与链队列)
- 数据结构学习笔记之队列结构
- 数据结构学习笔记6——队列
- 数据结构学习笔记(四)队列及其C++实现
- 两个栈实现一个队列
- POJ_3017 Cut the Sequence 单调队列+dp+BST
- 深入浅出Win32多线程设计之MFC的多线程-线程与消息队列(经典)
- 链队列
- HDOJ-----1873简单优先队列
- 一中单调队列专题
- 用两个栈实现一个队列——我作为面试官的小结
- HDU-5289(单调队列)
- 两个栈实现队列
- 利用操作队列和信号量来实现操作同步
- Assignment ZQOJ 25691 单调队列