Cấu trúc Queue: không hiểu tại sao lúc chạy thì biến rear không tăng

mình dùng DEV-C, mình thử chạy xem mảng có nhận dữ liệu đầu vào không và biến rear có tăng không thì không thấy tăng

#include<stdio.h>
#include<stdlib.h>
#include<stdbool.h>

bool isFull(int rear,int sizeArray){
	if(rear==sizeArray)
	   return true;
	else
	   return false;   
}

bool isEmpty(int front,int rear){
	if(front==rear)
	   return true;
	else
	   return false;   
}

int enQueue(char queue[],int *rear,int sizeArray,char data){
	if(isFull(*rear,sizeArray)==true){
		printf("Overflow.\n");
	}
	else{
		queue[*rear]=data;
		*rear++;
	}

}

int deQueue(char  queue[],int *front,int rear){
	if(isEmpty(*front,rear)==true){
		printf("Empty.\n");
	}
	else{
		queue[*front]=NULL;
		*front++;
	}
}

int main(void){
	char queue[10];
	char data;
	int rear=0,front=0,sizeArray=10,n,i;
	printf("Number of Character:");
	scanf("%d",&n);
	fflush(stdin);
	for(i=0;i<n;i++){
		printf("Input data:");
		scanf("%c",&data);
		fflush(stdin);
		enQueue(queue,&rear,sizeArray,data);
	}
	
	printf("%d %d\n",rear,front);
	for(i=front;i<rear;i++){
		printf("%c",queue[i]);
	}
return 0;
}

merged to the #1 post by noname00

Code này lỗi rồi thím. Hàm enQueue trả về int , nhưng bạn pass vào *rear tức là pass con trỏ, return rear tức là trả về con trỏ chứ không phải giá trị rear

2 Likes

m đã sửa lỗi đó vẫn không ra
mình đang mập mờ chỗ truyền tham chiếu ở hàm enQueue ( int* rear) đó

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?