在编程语言中怎样定义队列及其使用(C++)

2020-01-06 20:18:04王振洲


/*
 创建队列
 */
SEQUEUE initQueue();

在QueueControl.c中实现此方法


#include "QueueControl.h"
/*
 创建队列
 */
SEQUEUE initQueue(){
  SEQUEUE Q;
  //1.初始化队列,队头指针=队尾指针=0
  Q.front=Q.rear=0;
  return Q;
}

(2)插入

在QueueControl.h写出方法声明


/*
 插入
 */
SEQUEUE inQueue(SEQUEUE Q,DT x);

在QueueControl.c中实现此方法


#include "QueueControl.h"

SEQUEUE inQueue(SEQUEUE Q,DT x){
  //1.判断队列是上溢,就是队尾指针是否等于最大申请的空间
  if(Q.rear==M){
    printf("Up Overflown");
  }else{
     //2.从队尾插入结点
    Q.rear++;
    Q.data[Q.rear]=x;
    printf("in successn");
  }
  return Q;
}

(3)删除

在QueueControl.h写出方法声明


/*
 删除
 */
SEQUEUE outQueue(SEQUEUE Q);

/*
 打印队列元素
 */
void printQueue(SEQUEUE Q);

在QueueControl.c中实现此方法


#include "QueueControl.h"

SEQUEUE outQueue(SEQUEUE Q){
  //1.首先判断是否是空队列
  if(Q.front==Q.rear){
    printf("queue is emptyn");
  }else{
    //2.删除结点是从队头删除
    Q.front++;
     printf("out successn");
  }
  return Q;
}



/*
 打印队列元素
 */
void printQueue(SEQUEUE Q){
  //1.从队头开始打印数据
  SEQUEUE temp=Q;
  printf("queue={");
  while (temp.front<temp.rear) {
     temp.front++;
    if(temp.front==Q.front+1){
      printf("%c",temp.data[temp.front]);
    }else{
      printf(",%c",temp.data[temp.front]);
    }

  }
  printf("}n");
}

在main.c中的main方法(int main(int argc, const char * argv[]) {})调用此方法,并且进行判断