main.c:
#include "Quene.h"
#include <stdio.h>
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 <stdlib.h>
#include "Quene.h"
#include <assert.h>
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