⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 seqcqueue.h

📁 野人和修道士问题。(要求用图的邻接表的存储结构实现) 题目:假设有N个修道士和N个野人准备渡河
💻 H
字号:
//队列的线性算法
typedef struct 
{
        Data queue[MaxSize];
        int front;
        int rear;
        int count;
}SeqCQueue;
void QueueInitiate (SeqCQueue *Q)
{
	Q->count=0;
	Q->front=0;
	Q->rear=0;
	return;
}
int QueueNotEmpty(SeqCQueue Q)
{
    if(Q.count<=0)
		return 0;
    else return 1;
}
int QueueAppend(SeqCQueue *Q,Data x)
{
    if(Q->count>0&&Q->rear==Q->front)//*
    {
		printf("队列已满\n");
		return 0;
    }
    else{
		Q->queue[Q->rear]=x;
		Q->rear=(Q->rear+1)%MaxSize; 
		Q->count++;
		return 1;
    }
}
int QueueDelete(SeqCQueue *Q,Data *x)
{
    if(Q->count<=0)
    {
		printf("队列已空\n");
		return 0;
    }
    else {
		*x=Q->queue[Q->front];
		Q->front=(Q->front+1)%MaxSize;
		Q->count--;
		return 1;
	}
}
int QueueGet(SeqCQueue  Q,Data *x)
{
    
    if(Q.count<=0)
    {
		printf("队列已空\n");
		return 0;
    }
    else {
		*x=Q.queue[Q.front];
		return 1;
	}
	
}
 //注意:队列的特殊之自主,一般队列不用顺序线性结构来构造 ;因为它队尾进队头出的特点,
         
 // 很容易造成{假溢出}的现象,故一般用循环顺序队列 ;而在这种循环的程序书写中要注意两点:
 //1。当插入(删除)一个数据时不是直接将队尾(队头)指针加一,而是与最大内空间取模后加一;
 //2。队空与不空最后都是队尾和队头指针重合,区分它们可有多种方法,最常用的是增设一个计数变量,来加以区分 

                
    

    
        
         

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -