鏈隊列基本操作

來源:互聯網
上載者:User

#include<stdio.h>//鏈隊列的儲存結構
#include<stdlib.h>
#define OVERFLOW -2
typedef int QElemType;
typedef struct QNode{//此處本來沒加QNode,錯誤爆出???為何???
 QElemType data;
 struct QNode *next;
}QNode,*QueuePtr;
typedef struct{
 QueuePtr front;
 QueuePtr rear;
}LinkQueue;
void InitQueue(LinkQueue *Q)
{//構造一個空隊列Q
 Q->front=Q->rear=(QueuePtr)malloc(sizeof(QNode));
 if(!Q->front) exit(OVERFLOW);
 Q->front->next=NULL;
 printf("構造隊列成功..../n");
}
void DestroyQueue(LinkQueue *Q)
{//銷毀隊列
 while(Q->front)
 {
  Q->rear=Q->front->next;
  free(Q->front);
  Q->front=Q->rear;
 }
 printf("銷毀隊列成功!!!/n");
 exit(0);
}
void EnQueue(LinkQueue *Q,QElemType e)
{//插入元素e為Q的新的隊尾元素
 QueuePtr p;
 printf("ok now which number do you want input/n");
 scanf("%d",&e);
 p=(QueuePtr)malloc(sizeof(QNode));
 if(!p) exit(OVERFLOW);
 p->data=e;
 p->next=NULL;
 Q->rear->next=p;
 Q->rear=p;
 printf("插入元素成功/n");
}
void DeQueue(LinkQueue *Q,QElemType e)
{//若隊列不空,則刪除Q的隊頭元素,用e返回其值
 QueuePtr p;
 if(Q->front==Q->rear) {printf("隊列為空白!!!/n無法刪除");exit(0);}
 p=Q->front->next;
 e=p->data;
 Q->front->next=p->next;
 if(Q->rear==p) Q->rear=Q->front;
 free(p);
 printf("刪除成功!/n");
}
void PrintQueue(LinkQueue *Q)
{
 if(Q->front==Q->rear) {printf("sorry the Queue is empty");exit(0);}
 while(Q->front!=Q->rear)
 {
  printf("%d  ",Q->front->next->data);
  Q->front=Q->front->next;
 }
 printf("/nPrint is over/n");
}
int main()
{
 LinkQueue Q;
 QElemType e;
 InitQueue(&Q);
 int i;
 printf("please put you num what you want to do:/n1:destroy the queue/n2:enqueue/n3:dequeue/n4:printqueue/n");
 scanf("%d",&i);
 while(i)
 {
 switch(i)
 {
  case 1:DestroyQueue(&Q);break;//DestroyQueue(LinkQueue *Q)
  case 2:EnQueue(&Q,e);break;
  case 3:DeQueue(&Q,e);break;
  case 4:PrintQueue(&Q);break;
 }
 printf("you can choose again for/n1:destroy/n2:enqueue/n3:dequeue/n4:printqueue/n");
 scanf("%d",&i);
 }
 return 0;
}

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.