队列的一些基本操作

main.c:

#include "Quene.h"
#include

 

int main()
{
    Quene *q = createQuene();
    int i = 0;
    for(i = 0 ;i < 10;i++)
    {
        push(q,i);
    }
    
    Pop(q);
    Pop(q);
    
    
    Gettop(q);
    return 0;
}

Quene.c:

#include
#include "Quene.h"
#include


Quene *createQuene()
{

    struct Quene *q = (struct Quene *)malloc(sizeof(Quene));
    assert(q);
    q->head = NULL;
    q->tail = NULL;
    
    return q;
    
    
    
}
int QueneEmpty(Quene *q)
{
    
    assert(q);
    
    return q->head == NULL;
    
    
}

int push(Quene *q,int data)
{
    assert(q);
    struct Quenenode *node = (struct Quenenode *)malloc(sizeof(Quenenode));
    assert(node);
    node->data = data;
    node->next = NULL;
    
    if(q->head == NULL)
    {
        q->head = node;
        q->tail = node;
    }
    else
    {
        q->tail->next = node;
        q->tail = node;
        
    }
    return ok;
    
}
int Pop(Quene *q)
{
    assert(q);
    if(QueneEmpty(q) != 1)
    {
        Quenenode *node = q->head;
        q->head = node->next;
        free(node);
        
        if (QueneEmpty(q))  // 空队的情况下 将队尾置空
            q->tail = NULL;
        
    }
    return ok;
    
}

int Gettop(Quene *q)
{
    assert(q);
    
    if (QueneEmpty(q)) 
    
    return error;
    printf ("data = %d\n", q->head->data);
}

int Destroy(Quene *q)
{
    assert(q);
    
    while(q != NULL)
    {
        Pop(q);
    }
    free(q);
    return 0;
    
}

Quene.h:

#ifndef _QUENE_H_
#define _QUENE_H_

#define  ok    0
#define  error 1


typedef struct Quenenode
{
    int data;
    struct Quenenode *next;
}Quenenode;

typedef struct Quene
{
    struct Quenenode *head;
    struct Quenenode *tail;
}Quene;

Quene *createQuene();

int QueneEmpty(Quene *q);

int push(Quene *,int );

int Pop(Quene *q);

int Gettop(Quene *q);

int Destroy(Quene *q);

#endif

 

 

你可能感兴趣的:(队列的一些基本操作)