// queue.cpp : Defines the entry point for the console application.
/*-----CODE FOR FUN---------------
-------CREATED BY Dream_Whui--
-------2015-1-25--------------------*/
#include "stdafx.h"
#include <stdlib.h>
#include <iostream>
using namespace std;
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define OVERFLOW -2
#define INFEASIBLE -1
#define QElemType char //定义队列元素的类型
typedef struct QNode//定义结点的结构
{
QElemType data;
QNode *next;
}QNode,*QueuePtr;
typedef struct LinkQueue//定义队列结构
{
QueuePtr front;
QueuePtr rear;
}LinkQueue;
int InitQueue(LinkQueue &Q)//初始化队列
{
Q.front = (QueuePtr)malloc(sizeof(QNode));
if(!Q.front)
return ERROR;
Q.rear = Q.front;
Q.front->next = NULL;
return OK;
}
int DestroyQueue(LinkQueue &Q)//销毁队列
{
while(Q.front)
{
Q.rear = Q.front->next;
free (Q.front);
Q.front = Q.rear;
}
return OK;
}
int InsertQueue(LinkQueue &Q, QElemType e)//在对尾插入元素
{
QueuePtr p = (QueuePtr)malloc(sizeof(QNode));
if(!p)
return ERROR;
p->data = e;
p->next = NULL;
Q.rear->next = p;
Q.rear = p;
return OK;
}
int DeleteQueue(LinkQueue &Q, QElemType &e)//在对头删除元素
{
if(Q.front == Q.rear)
return ERROR;
QueuePtr p = (QueuePtr)malloc(sizeof(QNode));
if(!p)
return ERROR;
p = Q.front->next;
e = p->data;
Q.front->next = p->next;
if(Q.rear == p)
Q.rear = Q.front;
free(p);
return OK;
}
int QueueEmpty(LinkQueue &Q)//判断队列是否空
{
if(Q.front == Q.rear)
return OK;
else
return ERROR;
}
int QueueLength(LinkQueue &Q)//队列的长度
{
QueuePtr p = Q.front;
int num = 0;
while(p != Q.rear)
{
num++;
p = p->next;
}
return num;
}
QElemType GetHead(LinkQueue &Q, QElemType &e)//获取对头元素
{
if(!QueueEmpty(Q))
return e = Q.front->next->data;
else
return ERROR;
}
int main(int argc, char* argv[])
{
LinkQueue Q;
InitQueue(Q);
InsertQueue(Q,'W');
InsertQueue(Q,'A');
InsertQueue(Q,'D');
InsertQueue(Q,'F');
QueuePtr p = Q.front;
cout<<QueueLength(Q)<<endl;;
while(p != Q.rear)
{
cout<<p->next->data<<" ";
p = p->next;
}
cout<<endl;
char e;
DeleteQueue(Q,e);
cout<<e<<endl;
p = Q.front;
while(p != Q.rear)
{
cout<<p->next->data<<" ";
p = p->next;
}
cout<<endl;
GetHead(Q,e);
cout<<e<<endl;
return 0;
}数据结构--队列
最新推荐文章于 2025-07-10 19:57:48 发布
1707

被折叠的 条评论
为什么被折叠?



