cài đặt các thao tác với queue(sử dụng mảng , viết trên c). minh họa thông qua dữ liệu nhập từ file. cảm ơn mọi người nhiều. ai code giúp m với [IMG]images/smilies/Cry.gif[/IMG][IMG]images/smilies/Cry.gif[/IMG][IMG]images/smilies/Cry.gif[/IMG]
tiện cho mình hỏi thao tác với queue sử dụng con trỏ khác ji kiểu mảng?
Bản code này là kiểu con trỏ hay mảng vậy ạ?
Mã:
#include <conio.h>
#include <stdio.h>
#define MAX 100
typedef struct {
int head,tail,count;
int node[MAX];
} queue;
void QueueInitialize (queue *q){ //khoi tao hang doi
q->head =0;
q->tail= MAX-1;
q->count =0;
return;
}
int QueueEmpty (queue q){ //kiem tra hang doi rong
return (q.count<=0);
}
int QueueFull (queue q){ //kiem tra hang doi day
return (q.count== MAX);
}
void Put (queue *q,int x ){ //them 1 phan tu vao hang doi
if(q->count == MAX)
printf("Queue is full !");
else{
if(q->tail == MAX-1)
q->tail =0;
else
(q->tail)++;
q->node[q->tail]= x;
q->count++;
}
return;
}
int Get(queue *q){ //lay phan tu ra khoi hang doi
int x;
if(QueueEmpty (*q))
printf("Queue is empty !");
else {
x= q->node[q->head];
if(q->head == MAX-1)
q->head=0;
else
(q->head)++;
q->count --;
}
return x;
}
void Remove(queue *q,int *x) //lay phan tu ra khoi hang doi roi xoa
{
if (QueueEmpty (*q))
printf("Queue is empty ! ");
else {
if(q->head==q->tail) q->count=0;
else
q->head++;
}
}
int main()
{
FILE *f;
int n,a;
Queue q;
QueueInit(q);
f=fopen("Queue.inp","rt");
while(!feof(f)) {
fscanf(f,"%d",&a);
Put(q,a);
}
fclose(f);
f=fopen("Queue.out","wt");
while(QueueEmpty(q)==1){
Remove(q,a);
fprintf(f,"%d ",a);
}
fclose(f);
return 0;
}
View more random threads:
Thông qua phân tích dữ liệu Google từ 86 quốc gia, mới đây, một công ty tại Anh đã công bố bảng xếp hạng kích tấc "cậu nhỏ" của các nước trên thế giới. Kết quả, hầu hết các nước xếp ở nhóm đầu của...
"Chim" của chàng trai Việt thuộc...