码迷,mamicode.com
首页 > 其他好文 > 详细

链式队列的实现

时间:2016-09-15 06:17:19      阅读:106      评论:0      收藏:0      [点我收藏+]

标签:

/*链式队列其实就是一种特殊的单链表
只要单链表和结构体的知识咂实
就能很轻松的实现*/

#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
static int c=0;
typedef struct node
{
int data;
struct node *next;
}lnode,*queue;
typedef struct qnode
{
queue front;
queue rear;
}pnode,*queue1;

queue1 init()
{ queue1 l;
l=(pnode *)malloc(sizeof(pnode));
queue p;
p=(lnode *)malloc(sizeof(lnode));
if(p==NULL)
{
printf("内存分配失败");
exit(-1);
}
else
{ p->next=NULL;
l->front=p;
l->rear=p;
}
return l;
}

int push(pnode *l,int n)
{
lnode *p;
p=(lnode*)malloc(sizeof(lnode));
if(p==NULL)
{
printf("内存分配失败");
exit(-1);
}
else
{ p->next=NULL;
p->data=n;
c++;
l->rear->next=p;
l->rear=p;
}
return 1;
}

int del(pnode *l,int *n)
{
lnode *p,*s;

if(l->front==l->rear)
{
printf("empty");
return 0;
}
else
{
p=l->front->next;
l->front->next=p->next;
*n=p->data;

free(p);
c--;
// if(l->front->next==NULL)
// l->rear=l->front;
return *n;
}

}

void tra(queue1 l)
{
queue p,q,s;
p=l->front;
q=l->rear;
s=p->next;
printf("队列的值:");
for(int i=0;i<c;i++)
{
printf("%d ",s->data);
s=s->next;
}
}
int main()
{ pnode *l;
int n;
l=init();
push(l,1);
push(l,2);
push(l,3);
push(l,4);
push(l,5);
tra(l);
printf("\n");
del(l,&n);
printf("出列的数 :%d\n",n);
printf("\n");
tra(l);
return 0;
}技术分享

链式队列的实现

标签:

原文地址:http://www.cnblogs.com/mykonons/p/5874180.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!