关闭

Queue Operator

569人阅读 评论(0) 收藏 举报

Simple Queue Operator

#include <iostream.h>
#include <stdio.h>
#include <malloc.h>
typedef struct student{
 int data;
 struct student *next;
}SNode;
typedef struct linkqueue{
 struct student *front,*rear;
}LQueue;

bool InitLQueue(LQueue &LQ){
 LQ.front=(SNode *)malloc(sizeof(SNode));
 if(!LQ.front) return false;
 LQ.rear=LQ.front;
 LQ.front->next=NULL;
 return true;
}
bool InsertQueue(LQueue &LQ,int x){
 SNode *s;
 s=(SNode*)malloc(sizeof(SNode));
 if(!s) return false;
 s->data=x;
 s->next=NULL;
 LQ.rear->next=s;
 LQ.rear=s;
 return true;
}
bool DeQueue(LQueue &LQ, int &e){
 if(LQ.front == LQ.rear) return false;
 SNode * s=LQ.front->next;
    e=s->data;
 LQ.front->next=s->next;
 if(LQ.rear==s) LQ.rear=LQ.front;
 free(s);
 return true;
}
int GetLengthLQ(SNode *LN){
 int n=0;
 SNode *p=LN;
 while(p)
 {
  p=p->next;
  n++;
 }
 return n;
}
void DisplayLQ(LQueue &LQ){
 SNode *p=LQ.front->next;
 while(p){
  printf("%d/n",p->data);
  p=p->next;
 }
}

-------------------------------------------------------------------------------------------------------------------

Loop  Queue Operator

#include <stdio.h>
#include <malloc.h>
#define MAXQSIZE 6
typedef struct {
 int *base;
 int front;
 int rear;
}LSQueue;

bool InitQueue(LSQueue &Q){
 Q.base= (int *) malloc (MAXQSIZE*sizeof(int));
 if(!Q.base)return false;
 Q.front=Q.rear=0;
 return true;
}
bool EnQueue(LSQueue &Q,int e){
 if((Q.rear+1)%MAXQSIZE == Q.front)return false;
 Q.base[Q.rear]=e;
 Q.rear= (Q.rear+1)% MAXQSIZE;
 return true;
}
bool DeQueue(LSQueue &Q,int &e){
 if(Q.front == Q.rear) return false;
 e=Q.base[Q.front];
 Q.front=(Q.front+1)%MAXQSIZE;
 return true;
}
void DisplayLSQ(LSQueue &Q){
 LSQueue p =Q;
 while(p.front != p.rear){
  printf("%d/n",p.base[p.front]);
  p.front = (p.front +1)%MAXQSIZE;
 }
}

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:108568次
    • 积分:1514
    • 等级:
    • 排名:千里之外
    • 原创:30篇
    • 转载:19篇
    • 译文:7篇
    • 评论:16条
    最新评论