⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 queue.cpp

📁 数据结构中实现栈的操作.数据结构中实现栈的操作.
💻 CPP
字号:
typedef int QElemType;
#include "queue.h"
Status InitQueue(LinkQueue &Q)
{//初始化队列;
	Q.front = Q.rear =(QueuePtr) malloc(sizeof(QNode));
	if(!Q.front) exit(-1);
	Q.front->next=NULL;
	return OK;

}

Status DestroyQueue(LinkQueue &Q)
{//销毁队列
    while(Q.front)
  {
      Q.rear=Q.front->next;
	  free(Q.front );
	  Q.front = Q.rear ;
	}
	return OK;
}


Status ClearQueue(LinkQueue &Q)
{//清除队列中的元素
    QueuePtr p,q;
	Q.rear = Q.front ;
	p=Q.front ->next;
	Q.front->next=NULL;
	while(p)
	{
		q=p;
		p=p->next;
		free(q);
	}
	return OK;
}

Status QueueEmpty(LinkQueue Q)
{//判断队列是否为空;
	if(Q.front == Q.rear ) 	return TRUE;	
		return FALSE;
}

int QueueLength(LinkQueue Q)
{// 求队列的长度
    int i=0;
	QueuePtr p;
	p=Q.front;
	while(p!=Q.rear)
	{
		i++;
		p=p->next;
	}
	return i;
}

Status GetHead(LinkQueue Q,QElemType &e)
{// 若队列不空,则用e返回Q的队头元素,并返回OK,否则返回ERROR.
   QueuePtr p;
  if(Q.front == Q.rear ) 
	  return ERROR;
   p=Q.front ->next ;
   e=p->data;
   return OK;
  }


Status EnQueue(LinkQueue &Q,QElemType e)
{//把元素插入到队列中
   QueuePtr p;
   p=(QueuePtr)malloc(sizeof(QNode));
   if(!p) exit(OVERFLOW);
   p->data=e;
   p->next=NULL;
   Q.rear ->next =p;
   Q.rear =p;
   return OK;
}


Status DeQueue(LinkQueue &Q,QElemType &e)
{//若队列不空,用e返回队头元素的值,否则返回ERROR;
   QueuePtr p;
   if(Q.front == Q.rear ) 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;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -