链队列的建立 判空 入队 出队 求长 访头 清空和销毁

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

               
#include<iostream>using namespace std;typedef struct node{ int data; struct node *next;}Node;//头指针和尾指针typedef struct{ Node *front; Node *rear;}Queue;void initQueue(Queue &Q){ Q.front = Q.rear = new Node; Q.front->next = NULL;}bool isEmptyQueue(Queue &Q)if(NULL == Q.front) //此时链队列被销毁 {  cout << "链队列不存在." << endl;  exit(1); } if(Q.rear == Q.front)//此时链队列为空  return truereturn false;}void enterQueue(Queue &Q, int element){ Node *p = new Node; p->next = NULL; p->data = element; Q.rear->next = p; Q.rear = p;}int deQueue(Queue &Q)int outElement; if(isEmptyQueue(Q))  exit(1); Node *p = Q.front->next; outElement = p->data; Q.front->next = p->next; if(Q.rear == p)  //需要特殊处理  Q.rear = Q.front; delete p; return outElement;}int getLength(Queue &Q){ Node *p1 = Q.front; Node *p2 = Q.rear; int length = 0while(p1 != p2) {  p1 = p1->next;  length++; } return length;}int getHead(Queue &Q)if(isEmptyQueue(Q))  exit(1); return Q.front->next->data;}void clearQueue(Queue &Q)while(!isEmptyQueue(Q))  deQueue(Q);}void destroyQueue(Queue &Q){ clearQueue(Q); delete Q.front; Q.front = Q.rear = NULL;}int main(){ Queue Q; initQueue(Q); cout << getLength(Q) << endl;  int i; for(i = 1; i <= 10; i++)  enterQueue(Q, i); cout << getHead(Q) << endlcout << getLength(Q) << endlwhile(!isEmptyQueue(Q))  cout << deQueue(Q) << " "cout << endlif(isEmptyQueue(Q))  cout << "yes" << endlelse   cout << "no" << endl;  destroyQueue(Q); if(isEmptyQueue(Q))  cout << "yes" << endlelse   cout << "no" << endlreturn 0;}


 

           

给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow

这里写图片描述

猜你喜欢

转载自blog.csdn.net/sjhfkhsf/article/details/83937100