데이터 구조 - 순환 순서 대기 열의 기본 조작

//           

#include <iostream>
#include <string.h>
using namespace std;

#define MAXLEN 8
#define datatype char
#define Status int
typedef struct{
	datatype s[MAXLEN];
	int front;				//       
	int rear;				//       
}SeqQueue;

//   
Status InitSeqQueue(SeqQueue &sq)
{
	sq.front=-1;			
	sq.rear=-1;
	return 1;
}
//  
Status IsEmpty(SeqQueue sq)
{	//  ,  1;    0
	if(sq.front==sq.rear) return 1;
	else return 0;
}
//  
Status IsFull(SeqQueue sq)
{	//   ,  1;
	if(sq.front==(sq.rear+1)%MAXLEN) return 1;
	else return 0;
}
//  
Status InQueue(SeqQueue &sq,datatype x)
{
	//     
	if(sq.front==(sq.rear+1)%MAXLEN) return 0;
	
	sq.rear++;
	sq.s[sq.rear]=x;
	
	return 1;
}
//  
Status OutQueue(SeqQueue &sq,datatype &x)
{	//   ,  0;      1;
	//    
	if(sq.front==sq.rear) return 0;
	//  
	sq.front++;
	x=sq.s[sq.front];
	return 1;
}
//     
Status ShowQueue(SeqQueue &sq)
{
	if(sq.front==sq.rear) return 0;
	int i=sq.front;
	while(i!=sq.rear)
	{
		i++;
		cout<<sq.s[i]<<" ";

	}
	cout<<endl;
	return 1;
}
//     
Status ReadQueue(SeqQueue &sq,datatype &x)
{
	if(IsEmpty(sq)) return 0;	//    ,  0
	sq.front++;
	x=sq.s[sq.front];
	return 1;
}

//     


int main()
{
	cout<<"     "<<endl;
	SeqQueue SQ;
	InitSeqQueue(SQ);

	cout<<"  "<<endl;
	InQueue(SQ,'a');
	InQueue(SQ,'b');
	InQueue(SQ,'c');

	cout<<"      :"<<endl;
	ShowQueue(SQ);

	datatype x;
	cout<<"  :"<<endl;
	OutQueue(SQ,x);

	cout<<"      :"<<endl;
	ShowQueue(SQ);

	cout<<"      :"<<endl;
	ReadQueue(SQ,x);
	cout<<x<<endl;
	return 0;
}

----------------------------------------------------------
    :
     
  
      :
a b c
  :
      :
b c
      :
b
Press any key to continue . . .

드물다
2016-4-18

좋은 웹페이지 즐겨찾기