删除队列中的所有项目

时间:2013-05-04 00:47:39

标签: c queue

我无法从队列中删除所有项目。这是我想要做的,这是我的所有代码。请问我看不出我做错了什么,而且我想存储队列中有多少项目的数量。

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

int count = 0;

struct Node
{
    int Data;
    struct Node* next;
}*rear, *front;

void delQueue()
{

    struct Node *var=rear;
    while(var!=NULL)
    {
        free(var);
    var = var->next;
        count = count + 1;

    }

}

void push(int value)
{
    struct Node *temp;
    temp=(struct Node *)malloc(sizeof(struct Node));
    temp->Data=value;
    if (front == NULL)
    {
        front=temp;
        front->next=NULL;
        rear=front;
    }
    else
    {
        front->next=temp;
        front=temp;
        front->next=NULL;
    }
}

void display()
{
    struct Node *var=rear;
    if(var!=NULL)
    {
        printf("\nElements in queue are:  ");
        while(var!=NULL)
        {
            printf("\t%d",var->Data);
            var=var->next;
        }
    printf("\n");
    } 
    else
    printf("\nQueue is Empty\n");
}

1 个答案:

答案 0 :(得分:2)

问题就在这里:

free(var);
var= var->next;

你可以这样做:

struct Node* buf=var->next;
free(var);
var=buf;