0

キューからすべてのアイテムを削除できません。これが私がやろうとしていることであり、ここにすべてのコードがあります。何が間違っているのかわかりません。また、キューのどこにアイテムがいくつあるかのカウントを保存したいです。

#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");
}
4

1 に答える 1

2

問題は単にここにあります:

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

次のようにできます。

struct Node* buf=var->next;
free(var);
var=buf;
于 2013-05-04T00:57:25.527 に答える