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

📄 queue.cpp

📁 数据结构经典课件(附带各章的经典算法) 具体代码是使用C语言编写的
💻 CPP
字号:
#include "stdlib.h"
#include <iostream>
#include <iomanip>
using namespace std;

#define MaxSize 16
typedef int ElemType;
typedef struct
{  ElemType data[MaxSize];
   int front,rear;
}SqQueue;

void InitQueue(SqQueue *&q)
{ 
  q=(SqQueue *)malloc(sizeof(SqQueue));
  q->front=q->rear=0;
  
}

bool EnQueue(SqQueue *&q,ElemType e)
{ 
  if (q->rear+1==q->front)
     return false;
  q->rear=(q->rear+1) % MaxSize;
  q->data[q->rear]=e;
  return true;
}

bool DelQueue(SqQueue *&q,ElemType &e)
{ if (q->front==q->rear)
    return false;
  q->front=(q->front+1) % MaxSize;
  e=q->data[q->front];
  return true;
}

bool GetHead(SqQueue *&q,ElemType &e)
{ 
	if (q->front==q->rear)
	 return false;
    e=q->data[(q->front+1)% MaxSize];
    return true;
}

typedef struct qnode
{ ElemType data;
  struct qnode *next;
}QNode; 
    
typedef struct
{ QNode *front,*rear;
}LiQueue;

void InitQueue_L(LiQueue *&q)
{ 
  q=(LiQueue *)malloc(sizeof(LiQueue));
  q->rear=q->front=NULL;
  
}

void EnQueue_L(LiQueue *&q,ElemType e)
{  
   QNode *s;
   s=(QNode *)malloc(sizeof(QNode));
   s->data=e;
   s->next=NULL;
   if(q->rear==NULL)
      q->front=q->rear=s;
   else
	  {q->rear->next=s;
       q->rear=s;
   }
}

bool DelQueue_L(LiQueue *&q,ElemType &e)
{  QNode *t;
   if(q->rear==NULL)
      return false;
   t=q->front;
   q->front=t->next;
   if(q->rear==t)
	   q->rear=q->front=NULL;
   e=t->data;
   free(t);
   return true;
}

void main()
{ SqQueue *q;
  LiQueue *q1;
  ElemType e,x,y;
  bool k;
  InitQueue_L(q1);
  EnQueue_L(q1,100);
  EnQueue_L(q1,200);
  EnQueue_L(q1,300);
  k=DelQueue_L(q1,e);
  k=DelQueue_L(q1,e);
  InitQueue(q);
  k=EnQueue(q,0);
  k=EnQueue(q,1);
  k=EnQueue(q,1);
  k=EnQueue(q,0);
  cout <<endl<<setw(40)<<' '<<'1'<<endl;
  int col=35;
  for(int i=2;i<10;i++)
    { col=col-2;
      cout<<setw(col)<<' ';
      for(int j=1;j<=i+1;j++)
	 {  k=DelQueue(q,x);
	    k=GetHead(q,y);
	    cout<<setw(4)<<x+y;
	    k=EnQueue(q,x+y);
	 }
       cout<<endl;
       k=EnQueue(q,0);
    }
  e=1;

}

⌨️ 快捷键说明

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