您的位置:首页 > 其它

队列的链式实现

2015-06-28 10:14 302 查看
队列的链式实现:



在这个队列里面:r 为低, f 为顶

//队列(链式)

#include <iostream>
using namespace std;

typedef int DataType;
struct QNode
{
DataType data;
struct QNode *link;
};
typedef struct QNode *PNode;

//r为低 f为顶
struct LinkQueue
{
PNode f;
PNode r;
};
typedef struct LinkQueue * PLinkQueue;

PLinkQueue createEmptyQueue()
{
PLinkQueue plqueue = (PLinkQueue) malloc (sizeof(struct LinkQueue));
if(plqueue != NULL)
{
plqueue ->f = NULL;
plqueue ->r =NULL;
}
else
printf("Out of space\n");
return plqueue;
}

int isEmptyQueue(PLinkQueue plqueue)
{
return (plqueue ->f == NULL);
}

void enQueue( PLinkQueue plqueue, DataType x)
{
PNode p = (PNode) malloc (sizeof(struct QNode));
if(p!= NULL)
{
p->data = x;
p->link = NULL;

if(plqueue ->f == NULL)
plqueue->f = p;
else
plqueue ->r -> link = p;

plqueue->r =p;
}
else
printf("Out of space\n");

}

void deQueue(PLinkQueue plqueue)
{
PNode p = (PNode) malloc (sizeof(struct QNode));
if(plqueue->f == NULL)
printf("Empty Queue\n");
else
{
p = plqueue ->f;
plqueue -> f = p ->link;
free(p);
}

}

DataType getFront(PLinkQueue plqueue)
{
if(plqueue ->f == NULL)
printf("Empty Queue\n");
else
return (plqueue ->f ->data);
}
int main()
{
PLinkQueue lqueue = createEmptyQueue();
cout<<"创建一个n元素的队列\n输入n"<<endl;
int n,t;
cin>>n;
t = n;
while(n)
{
int data;
cin>>data;
enQueue(lqueue,data);
n--;
}
cout<<"取队头并出队"<<endl;
while(t)
{
cout<<getFront(lqueue)<<" ";
deQueue(lqueue);
t--;
}
cout<<endl;
system("pause");
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: