1. 程式人生 > >連結串列實現順序佇列

連結串列實現順序佇列

#include<iostream> using namespace std; typedef struct node {     int value;     struct node *next; }Node; typedef struct queue {     Node *front;     Node *rear; }Queue;

Node* CreateNode(int val) {     Node *newnode=(Node*)malloc(sizeof(Node));     if(newnode==NULL)         return NULL;     else     {         newnode->value=val;         newnode->next=NULL;         return newnode;     } } void Enqueue(Queue *q,int val) {     Node *newnode=CreateNode(val);     if(newnode==NULL)         return;     else     {         q->rear->next=newnode;         q->rear=newnode;     } } int QueueLength(Queue *q) {     int cnt=0;     Node *f=q->front;     while(f)     {         cnt++;         f=f->next;         }         return cnt; }  void Dequeue(Queue *q) {     if(!QueueLength(q))  //鏈佇列為空      {         cout<<"沒有可以刪除的元素"<<endl;         return;     }     Node *p;     p=q->front;     q->front=p->next;     cout<<"刪去元素:"<<p->value<<endl;     free(p);     return; } void PrintQueue(Queue *q) {     Node *f=q->front;     if(!QueueLength(q))         {         cout<<"佇列為空"<<endl;         return;     }     cout<<"佇列現有元素:";     for(int i=0;i<QueueLength(q);i++)     {         cout<<f->value<<" ";         f=f->next;         }         cout<<endl;         return; }  int main() {     Queue q;     int a[]={1,2,3,4,5};     q.front=(Node*)malloc(sizeof(Node));     if(!q.front)         return 0;     q.front->next=NULL;     q.front->value=a[0];     q.rear=q.front;     for(int i=1;i<5;i++)         Enqueue(&q,a[i]);     PrintQueue(&q);     cout<<"佇列中元素個數為:"<<QueueLength(&q)<<endl;     Dequeue(&q);     cout<<"佇列中元素個數為:"<<QueueLength(&q)<<endl;     Node *f2=q.front;     PrintQueue(&q);     return 0; }