0%

队列

数据结构

基础队列

定义

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include<iostream>
#include<cstdlib>
#define MAX_NUM 10
#define ElemType int
using namespace std ;

typedef struct queue{
ElemType elem[MAX_NUM] ;
int front ;
int rear ;
}Queue;

void Print_Queue(Queue* q){
for(int i=q->front; i<=q->rear; i++)
{
if(i==q->rear){
printf("Q[%d] = %d \n",i,q->elem[i]) ;
return ;
}
printf("Q[%d] = %d , ",i,q->elem[i]) ;
}
}

Queue* init_Queue(int num){
Queue* q = (Queue*)malloc(sizeof(Queue)) ;
for(int i=0; i<num; i++) cin >> q->elem[i] ;
q->front = 0 ;
q->rear = num-1 ;
return q ;
}

void entry_Queue(Queue* q ,int v){
q->rear ++ ;
if(q->rear > MAX_NUM){
printf("OverFlow!\n") ;
exit(-1) ;
}
q->elem[q->rear] = v ;
}

ElemType exit_Queue(Queue* q){
ElemType res = q->elem[q->front] ;
q->front ++ ;
return res ;
}

循队队列

定义

1
2
3
4
5
typedef struct queue{
ElemType* elem ;
int front ;
int rear ;
}Queue ;

初始化

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Queue* init_Queue(int num){
if(num > MAX_NUM){
printf("input Error !\n") ;
return nullptr ;
}
Queue* q = (Queue*)malloc(sizeof(Queue)) ;
q->elem = (ElemType*)malloc(sizeof(ElemType)*num) ;
q->front = 0 ;
q->rear = num-1 ;
int v ;
for(int i=0; i<num; i++){
cin >> v ;
q->elem[i] = v ;
}
return q ;
}

打印队列

1
2
3
4
5
6
7
void Print(Queue* q){
for(int i=q->front; i<=q->rear; ){
i = (i+1)%MAX_NUM ;
printf("%d ",i,q->elem[i]) ;
}
printf("\n") ;
}

循环队列是否已满

1
2
3
4
int isFull(Queue* q){
if((q->rear + 1) % MAX_NUM == q->front) return 1 ;
else return -1 ;
}

出队入队

1
2
3
4
5
6
7
8
9
10
11
12
13
int pop_head_Queue(Queue* q){
if(q->front == q->rear) return -1 ;
int res = q->elem[q->front] ;
q->front = (q->front+1)%MAX_NUM ;
cout<<"res = "<<res<<endl ;
return res ;
}

void push_tail_Queue(Queue* q, int v){
if(q->front == ((q->rear+1) %MAX_NUM)) return ;
q->rear++ ;
q->elem[q->rear] = v ;
}

清空与销毁

1
2
3
4
5
6
7
8
void clear_Queue(Queue* q){
q->front = q->rear = 0 ;
}

int destroy_Queue(Queue* q){
free(q->elem) ;
q->elem = nullptr ;
}

链式队列

-------------本文结束感谢您的阅读-------------
请作者喝一杯蜜雪冰城吧!