队列,就如我们排队买东西一样先到先买,即先进先出。
队列两端开口,一端进,一端出。
方法如下:
#include<stdio.h>
#include<stdlib.h>
typedef struct node
{
int nval;
struct node* pnext;
}queue;
void push(queue** pphead, queue** ppend, int nval)//进(入队)
{
queue* ptemp = malloc(sizeof(queue));
ptemp->nval = nval;
ptemp->pnext = NULL;
if (*pphead == NULL)
{
*pphead = ptemp;
}
else
{
(*ppend)->pnext = ptemp;
}
*ppend = ptemp;
}
int pop(queue** pphead, queue** ppend)//出(出队)
{
if (*pphead != NULL)
{
queue* pdel = *pphead;
*pphead = (*pphead)->pnext;
int n = pdel->nval;
free(pdel);
pdel = NULL;
if (NULL==*pphead)
{
*ppend = NULL;
}
return n;
}
return -1;
}
int main()
{
queue* phead = NULL;
queue* pend = NULL;
push(&phead, &pend, 1);
push(&phead, &pend, 2);
push(&phead, &pend, 3);
printf("%d\n", pop(&phead, &pend));
printf("%d\n", pop(&phead, &pend));
printf("%d\n", pop(&phead, &pend));
return 0;
}