当前位置 博文首页 > Inmaturity_7的博客:408计算机考研--数据结构--队列学习(C语言
#include<stdio.h>
#include<stdlib.h>
#define MaxSize 10
typedef struct SqQueue{
int data[MaxSize];//存储队列数据
int front,rear;//队头,队尾指针
}SqQueue;
//初始化队列
void Init_SqQueue(SqQueue &Q){
Q.front=Q.rear=0;
}
//判队空
bool is_Empty(SqQueue Q){
if(Q.front==Q.rear){
return true;
}
return false;
}
//入队
bool EnQueue(SqQueue &Q,int x){
if((Q.rear+1)%MaxSize==Q.front){//判队满
return false;
}
Q.data[Q.rear]=x;//入队
Q.rear=(Q.rear+1)%MaxSize;//尾指针后移
return true;
}
//出队
bool DeQueue(SqQueue &Q,int &x){
if(is_Empty(Q)){//判队空
return false;
}
x=Q.data[Q.front];
Q.front=(Q.front+1)%MaxSize;//头指针后移
return true;
}
int main(){
SqQueue q;
Init_SqQueue(q);
printf("当前队列是否为空:%d\n",is_Empty(q));
//测试入队
EnQueue(q,1);
EnQueue(q,2);
EnQueue(q,3);
EnQueue(q,4);
EnQueue(q,5);
//测试出队
int x1,x2,x3,x4,x5;
DeQueue(q,x1);
DeQueue(q,x2);
DeQueue(q,x3);
DeQueue(q,x4);
DeQueue(q,x5);
printf("%d %d %d %d %d\n",x1,x2,x3,x4,x5);
}
#include<stdio.h>
#include<stdlib.h>
#define MaxSize 10
//链表
typedef struct LinkNode{
int val;//数据域
struct LinkNode *next;//指针域
}LinkNode,*LinkedList;
//链式存储队列
typedef struct LinkedQueue{
LinkedList front,rear;
}LinkedQueue;
//初始化队列
void Init_LinkedQueue(LinkedQueue &q){
q.front=q.rear=(LinkedList)malloc(sizeof(LinkNode));//建立队头和队尾
q.front->next=NULL;
}
//判队空
bool is_Empty(LinkedQueue &q){
if(q.front==q.rear){
return true;
}
return false;
}
//入队
void EnQueue(LinkedQueue &q,int x){
LinkedList newNode=(LinkedList)malloc(sizeof(LinkNode));//新结点
newNode->val=x;
newNode->next=NULL;
//插入新结点
q.rear->next=newNode;
q.rear=newNode;
return;
}
//出队
bool DeQueue(LinkedQueue &q,int &x){
if(is_Empty(q)){
return false;
}
//获取被删结点
LinkedList p=q.front->next;
x=p->val;
//删除结点
q.front->next=p->next;
if(q.rear==p){
q.rear=q.front;
}
free(p);
return true;
}
int main(){
//新建带头结点队列测试
LinkedQueue q;
Init_LinkedQueue(q);
//测试入队
EnQueue(q,1);
EnQueue(q,2);
EnQueue(q,3);
EnQueue(q,4);
EnQueue(q,5);
//测试出队
int x1,x2,x3,x4,x5;
DeQueue(q,x1);
DeQueue(q,x2);
DeQueue(q,x3);
DeQueue(q,x4);
DeQueue(q,x5);
printf("%d %d %d %d %d\n",x1,x2,x3,x4,x5);
}
cs