域名网站空间,国际市场调研公司,wordpress文章加载特效,单位网站建设做到哪个科目一、队列的概念
操作受限的线性表#xff0c;允许在队列的一端执行入队操作#xff0c;另一端执行出队操作
先进先出(FIFO)
1.顺序队列
物理结构连续#xff0c;依赖于数组实现
队列中有一个队头指针和队尾指针#xff0c;队头指针保存每次要出队的元素#xff0c;队…一、队列的概念
操作受限的线性表允许在队列的一端执行入队操作另一端执行出队操作
先进先出(FIFO)
1.顺序队列
物理结构连续依赖于数组实现
队列中有一个队头指针和队尾指针队头指针保存每次要出队的元素队尾指针保存每次要入队的位置
顺序队列存在假溢满现象队列中仍然有位置入队元素但是队尾指针已经走到了队满的条件 2.循环队列
循环队列用于解决假溢满现象
如果循环队列的每个位置都存入元素队列的判空和判满是同一种条件frontrear
所以循环队列会人为的浪费掉一个空间用作判满条件 二、功能
循环队列结构体
#ifndef __SEQ_QUEUE_H__
#define __SEQ_QUEUE_H__
#define MAX 8
#include stdio.h
#include stdlib.htypedef int datatype;
typedef struct seq_que{datatype data[MAX];int front;int rear;
}queue,*queue_p;//创建
queue_p creat_que();
//判空
int que_empty(queue_p S);
//判满
int que_full(queue_p S);
//入队
void push_queue(queue_p S,datatype data);
//出队
void pop_queue(queue_p S);
//打印
void out_put(queue_p S);
//销毁
void free_que(queue_p *S);#endif
1.创建
//创建
queue_p creat_que(){queue_p S(queue_p)malloc(sizeof(queue));if(SNULL){printf(入参为空\n);return NULL;}S-front0;S-frontS-rear;return S;
}
2.判空
//判空
int que_empty(queue_p S){if(SNULL){printf(入参为空\n);return -1;}
return S-frontS-rear?1:0;}
3.判满
int que_full(queue_p S){if(SNULL){printf(入参为空\n);return -1;}return (S-rear1)%MAXS-front?1:0;
}
4.入队
//入队
void push_queue(queue_p S,datatype data){if(SNULL){printf(入参为空\n);return;}if(que_full(S)){printf(队列已满\n);return;
}
S-data[S-rear]data;
S-rear(S-rear1)%MAX;
}
5.出队
//出队
void pop_queue(queue_p S){if(SNULL){printf(入参为空\n);return;}if(que_empty(S)){printf(队列为空\n);return;}
S-front(S-front1)%MAX;
}
6.打印
//打印
void out_put(queue_p S){if(SNULL){printf(入参为空\n);return;}//符合队列的性质从头开始打印//先保留一份队头元素的下标int tempS-front;while(temp!S-rear){printf(%d ,S-data[temp]);temp(temp1)%MAX;}putchar(10);
}
7.销毁
//销毁
void free_que(queue_p *S){if(SNULL || *SNULL){printf(入参为空\n);return; }free(*S);*SNULL;
}