Ниже приведена реализация моей очереди, которая имеет функции постановки в очередь и удаления из очереди.По какой-то причине он падает без подсказок (где он падает), так как код работает на Android.Я подозреваю, с моим кодом очереди.Если у вас есть какие-либо подсказки, что не так с моим кодом, пожалуйста, дайте мне идею.
Спасибо за любую помощь.
Вот мой код C:
int qLast = 0;
typedef struct phoneSt PhoneStructure;
typedef struct{
PhoneStructure Phone;
struct phoneQ *next;
}phoneQ;
phoneQ *headElement = NULL; /* front pointer in queue*/
phoneQ *tailElement = NULL; /* rear pointer in queue */
void enqueue_Phone(PhoneStructure Frame)
{
phoneQ *newnode; /* New node to be inserted */
newnode=(phoneQ*)av_malloc(sizeof(phoneQ));
newnode->next=NULL;
newnode->Phone=Frame;
qLast++;
if(headElement==NULL && tailElement==NULL)
{
headElement=newnode;
tailElement=newnode;
}
else
{
tailElement->next=newnode;
tailElement=newnode;
}
__android_log_print(ANDROID_LOG_DEBUG, "myphone.c", "Queue is having %d element", qLast);
}
PhoneStructure dequeue_Phone()
{
phoneQ *delnode; /* Node to be deleted */
PhoneStructure Frame;
__android_log_write(ANDROID_LOG_DEBUG, "myplayer.c", "In dequeue_Phone");
if(headElement==NULL && tailElement==NULL){
__android_log_write(ANDROID_LOG_ERROR, "myphone.c", "Queue is empty to delete any element");
}
else
{
__android_log_write(ANDROID_LOG_DEBUG, "myphone.c", "In dequeue queue is not empty");
delnode=headElement;
headElement=headElement->next;
Frame = delnode->Phone;
av_free(delnode);
qLast--;
}
__android_log_print(ANDROID_LOG_DEBUG, "myphone.c", "In dequeue_Phone returning remaining %d",qLast);
return Frame;
}