1. 程式人生 > >鏈佇列的建立 判空 入隊 出隊 求長 訪頭 清空和銷燬

鏈佇列的建立 判空 入隊 出隊 求長 訪頭 清空和銷燬

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!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

這裡寫圖片描述