栗子


私信TA

用户名:dotcpp0729093

访问量:541

签 名:

believe or not

等  级
排  名 641
经  验 4069
参赛次数 0
文章发表 14
年  龄 0
在职情况 学生
学  校
专  业

  自我简介:

TA的其他文章

#include<iostream>
using namespace std;
/*队列的顺序存储结构*/
#define MAXQSIZE 100
typedef struct 
{
	QElemType *base;// 存储空间的基地址 
	int front;//头指针//出队方向 
	int rear;//尾指针 //入队方向 
 }SqQueue;
 /*初始化*/
int InitQueue(SqQueue &Q)
{
	Q.base=new int[MAXQSIZE];
	Q.front=Q.rear;
	return 0;
 } 
/*求循环队列队列长度*/ 
int QueueLength(SqQueue Q)
{
	return (Q.rear-Q.front+MAXQSIZE)%MAXQSIZE;//循环队列可能会为负数 
 } 
/*循环队列的入队*/
int EnQueue(SqQueue &Q,QElemType e)
{
	if((Q.rear+1)%MAXQSIZE==Q.front)//若尾指针在循环意义上加上1等于头指针,表明队满 
	return 0;
	Q.base[Q.rear]=e;//新元素插入队尾 
	Q.rear=(Q.rear+1)%MAXQSIZE;//队尾指针后移 
	return 0; 
 } 
 /*循环队列的出队*/ 
 int DeQueue(SqQueue &Q,QElemType e)
 {  if(Q.front==Q.rear) return 0;//队空 
 	e=Q.base[Q.front];
 	Q.front=(Q.front+1)%MAXQSIZE;
 	return 0;
 }
 /*取队头元素 */
QELemType GetHead(SqQueue Q)
{
	if(Q.front!=Q.rear)
	return Q.base[Q.front];
 } 
/*链队列的存储结构*/
typedef struct QNode//队列结点 
{
	QElemType data;
	struct QNode *next;
 }QNode,*QueuePtr;
 typedef struct 
 {
 	QueuePtr front;//队头指针做首元结点不存数据//出队
 	QueuePtr rear;//队尾指针 //入队 
 }LinkQueue;///队列 
/*初始化*/
int InitQueue(LinkQueue &Q)
{
	Q.front=Q.rear=new QNode;//生成的新结点为头结点,队头和队尾都指向头结点 
	Q.front->next=NULL;//头指针的指针域置空 
	return 0;
 } 
/*入队*/
int EnQueue(LinkQueue &Q,int e)
{
QNode *p;
p=new QNode;
p->data=e;
p->next=NULL;//记得置空 
Q.rear->next=p;
Q.rear=P;
return 0;
 } 
/*出队*/
int DeQueue(LinkQueue &Q,int &e)//必须借助一个p,否则无法删除出队的结点 
{   QNode *p;
     p=Q.front->next; 
	e=p->data;
	Q.front->next=p->next;
	if(Q.rear==p)
	Q.front=Q.rear;
	delete p;
	return 0;
 } 
/*取队头*/
QELemType GetHead(LinkQueue Q)
{
	if(Q.front!=Q.rear)
	return Q.front->next->data;
 }


 

0.0分

0 人评分

  评论区

  • «
  • »