队列的操作
来源:互联网 发布:阿里云费用如何提现 编辑:程序博客网 时间:2024/05/20 17:10
/**********************************************************************************************
**File: queue.c
@@Author: FreeKing
##Created: Sep 15th 2009
$$Description: 关于队列的操作,创建队列,入,出队列,取队列头,判断队列是否为空,求队列长
清空队列等操作
**********************************************************************************************/
#include <stdio.h>
#include <malloc.h>
typedef struct QNode{
int data;
struct QNode *next;
}QNode,*QueuePtr;
typedef struct
{
QueuePtr front; //对头指针
QueuePtr rear;//对尾指针
}LinkQueue;
//初始化一个队列
int InitQueue(LinkQueue &Q)
{
Q.front = Q.rear = (QueuePtr*)malloc(sizeof(QNode));
if(!Q.front)
exit(-1);
Q.front->next = NULL;
return 0;
}
//销毁一个队列
int DestroyQueue(LinkQueue &Q)
{
while(Q.front)
{
Q.rear = Q.front->next;
free(Q.front);
Q.front = Q.rear;
}
return 0;
}
//插入元素e为Q的新的队尾元素
int EnQueue(LinkQueue &Q, int e)
{
p = (QueuePtr*)malloc(sizeof(QNode));
if(!p)
exit(-1);
p->data = e;
p->next = NULL;
Q.rear->next = p;
Q.rear = p;
return 0;
}
//若队列不为空,则删除Q的对头元素,用e返回其值,
int DeQueue( LinkQueue &Q, int e)
{
if( Q.front == Q.rear)
return -1;
p = Q.front->next;
e = p->data;
Q.front->next = p->next;
if(Q.rear == p)
Q.rear = Q.front;
free(p);
return e;
}
- 循环队列的操作
- 队列的操作
- 链队列的操作
- 队列的简单操作
- 队列的基本操作
- 队列的基本操作
- 队列的基本操作
- 队列的相关操作
- 链队列的操作
- 队列的简单操作
- 队列的基本操作!
- E - 队列的操作
- 队列的基本操作
- 队列的相关操作
- 队列的基本操作
- 队列的基本操作
- 队列的基本操作
- 队列的基本操作
- 十进制转26进制(字母) dec2Alpha
- 10-09-09
- CSS控制页面的四种方式
- 栈的相关操作
- 暴雪,你为何选择了网易?一个不合格的游戏运营者
- 队列的操作
- 创建一副位图并将位图保存为bmp格式
- break 和Continue 误大事
- 群体无聊 group boredom
- 各种“假日”的英文表达
- minigui下实现截屏
- Linux rar 安装
- 网页页面内跳转
- Lotus Notes/Domino 发布最新版本 - 8.5.1