您的位置:首页 > 理论基础 > 数据结构算法

数据结构--用C实现链式队列

2017-03-12 15:27 411 查看
#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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: