#include"seqQueue.h"
void initseqQueue(SeqQueue
* Queue
)
{
Queue
->front
= 0;
Queue
->rear
= 0;
Queue
->length
= 0;
}
int inseqQueue(SeqQueue
* Queue
, int* value
)
{
if (Queue
->front
== (Queue
->rear
+ 1) % max
)
{
printf("队列已满,无法入队:!");
return 0;
}
Queue
->data
[Queue
->rear
] =*value
;
Queue
->rear
++;
Queue
->length
++;
return 1;
}
int outseqQueue(SeqQueue
* Queue
,element
* ment
)
{
static int i
= 0;
if (Queue
->front
== Queue
->rear
)
{
printf("队列为空,无法出队:!");
return 0;
}
ment
->ment
[i
] = Queue
->data
[Queue
->front
];
Queue
->front
++;
Queue
->length
--;
i
++;
return 0;
}
int seqQueue_is_full(SeqQueue
* Queue
)
{
return Queue
->front
== (Queue
->rear
+ 1) % max
;
}
int seqQueue_is_empty(SeqQueue
* Queue
)
{
return Queue
->front
== Queue
->rear
;
}
void initseqQueue(SeqQueue
* Queue
)
{
Queue
->length
= 0;
Queue
->front
= Queue
->rear
= max
- 1;
}
int inseqQueue(SeqQueue
* Queue
, int* value
)
{
if (Queue
->front
== (Queue
->rear
+ 1) % max
)
{
printf("队列已满,无法入队:!");
return 0;
}
Queue
->rear
= (Queue
->rear
+ 1) % max
;
Queue
->data
[Queue
->rear
] = *value
;
Queue
->length
++;
return 1;
}
int outseqQueue(SeqQueue
* Queue
, element
* ment
)
{
static int i
= 0;
if (Queue
->front
== Queue
->rear
)
{
printf("队列为空,无法出队:!");
return 0;
}
Queue
->front
= (Queue
->front
+ 1) % max
;
ment
->ment
[i
] = Queue
->data
[Queue
->front
];
Queue
->length
--;
i
++;
return 0;
}
int seqQueue_is_full(SeqQueue
* Queue
)
{
return Queue
->front
== (Queue
->rear
+ 1) % max
;
}
int seqQueue_is_empty(SeqQueue
* Queue
)
{
return Queue
->front
== Queue
->rear
;
}
void show_seqQueue(SeqQueue
* Queue
)
{
int i
= 0;
for (i
= (Queue
->front
+ 1)%max
; i
!= (Queue
->rear
+1)%max
; i
=(i
+1)%max
)
{
printf("当前队内元素为:%d\n", Queue
->data
[i
]);
}
}
#ifndef _seqQueue_h
#define _seqQueue_h
#include<stdio.h>
#include<iostream>
#include<stdlib.h>
typedef int datatype
;
#define max 10
typedef struct element
{
datatype ment
[max
];
}element
;
typedef struct SeqQueue
{
datatype data
[max
];
int length
;
int front
;
int rear
;
}SeqQueue
;
extern void initseqQueue(SeqQueue
* Queue
);
extern int inseqQueue(SeqQueue
* Queue
, int* value
);
extern int outseqQueue(SeqQueue
* Queue
,element
* ment
);
extern int seqQueue_is_full(SeqQueue
* Queue
);
extern int seqQueue_is_empty(SeqQueue
* Queue
);
extern void show_seqQueue(SeqQueue
* Queue
);
#endif
#include"seqQueue.h"
int main(void)
{
int i
= 0;
int a
[10] = { 1,2,3,4,5,6,7,8,9,10 };
SeqQueue
* Queue
= (SeqQueue
*)malloc(sizeof(SeqQueue
));
element
* ment
= (element
*)malloc(sizeof(element
));
initseqQueue(Queue
);
for (i
= 0; i
<max
-1; i
++)
{
inseqQueue(Queue
,a
+i
);
printf("当前入队元素为:%d\n", a
[i
]);
}
printf("\n");
for (i
= 0; i
<5;i
++)
{
outseqQueue(Queue
, ment
);
printf("当前出队元素为:%d\n", ment
->ment
[i
]);
}
printf("\n");
for (i
=Queue
->front
;i
<Queue
->rear
; i
++)
{
printf("当前队内元素为:%d\n", Queue
->data
[i
]);
}
system("pause");
return 0;
}
转载请注明原文地址: https://mac.8miu.com/read-494690.html