链式队列

来源:互联网 发布:人工智能摧毁人类 编辑:程序博客网 时间:2024/05/20 14:23
<span style="font-size:24px;">/*链式队列*/#include <stdio.h>#include <stdlib.h>#include <malloc.h>#define OK true#define ERROR false#define OVERFLOW -1typedef bool statue;typedef int Qelemtype;typedef struct node{Qelemtype elem;node *next;}NODE,*pNODE;typedef struct{pNODE pFront;pNODE pRear;}Qeueu;statue iniQueue(Qeueu *sq){//初始化sq->pFront=(pNODE)malloc(sizeof(NODE));if(sq->pFront==NULL){printf("内存分配失败\n\n");exit(OVERFLOW);}sq->pRear=sq->pFront;return OK;}statue isEmpty(Qeueu sq){if(sq.pFront==sq.pRear)return OK;return ERROR;}statue EnQueue(Qeueu *sq,Qelemtype val){//入队pNODE pnew=(pNODE)malloc(sizeof(NODE));if(pnew==NULL){printf("内存分配失败\n\n");exit(OVERFLOW);}pnew->elem=val;sq->pRear->next=pnew;pnew->next=NULL;sq->pRear=pnew;return OK;}statue DeQueue(Qeueu *sq,Qelemtype *val){//出队if(isEmpty(*sq)){return ERROR;}*val=sq->pFront->elem;pNODE p=sq->pFront;sq->pFront=sq->pFront->next;free(p);return OK;}void showQueue(Qeueu sq){if(isEmpty(sq)){printf("EMPTY\n");return;}while(!isEmpty(sq)){printf("%d  ",sq.pFront->next->elem);sq.pFront=sq.pFront->next;}printf("\n");}int main(){Qeueu sq;int val;iniQueue(&sq);EnQueue(&sq,2);EnQueue(&sq,3);DeQueue(&sq,&val);EnQueue(&sq,4);showQueue(sq);return 0;}</span>

0 0