#include <stdio.h>
#include <stdlib.h>
typedef struct node
{
int data;
struct node *next;
} Node;
typedef struct queue
{
struct node *top;
struct node *tail;
} Queue;
int gettop(struct queue *p)
{
return p->top-> data;
}
struct queue * push(struct queue *p,int x )
{
struct node *q;
q = (struct node *)malloc(sizeof(struct node));
q->data = x;
q->next = NULL;
if(p->top == NULL)
p->top = q, p->tail = q;
else
{
p->tail->next = q;
p->tail =q;
}
return p;
}
struct queue * pop(struct queue *p)
{
struct node *q;
if(!p->top)
return NULL;
q = (struct node *)malloc(sizeof(struct node));
q = p->top;
p->top = p->top->next;
free(q);
return p;
}
int stempty(struct queue *p)
{
return(p->top==NULL ? 0 : 1);
}
int main() //用于测试
{
struct queue *p;
int n; //栈的长度
p = (Queue *)malloc(sizeof(Queue));
p->top = NULL;
p->tail = NULL;
int a[6] = {1,2,3,4,5,6},t = 7;//测试数据
int i;
for(i=0; i<6; i++)
{
p = push(p,a[i]);
}
p = push(p,t);
p = pop(p);
p = pop(p);
p = pop(p);
printf("%d\n",gettop(p));//打印top的数
while(p->top !=NULL)
{
printf("%d ",p->top->data);//打印队列
printf("%d\n",stempty(p));//队列是否为空
p->top=p->top->next;
}
printf("%d\n",stempty(p));
return 0;
}
数据结构--用C实现链式队列
最新推荐文章于 2022-03-10 11:20:45 发布