#include<iostream>
#include<stdio.h>
#include<stdlib.h>
using namespace std;
typedef struct node{
int data;
struct node*next;
}node;//定义一个节点
typedef struct queue{
node*front;
node*end;
}queue;//定义一个队列
node*weibu(node*head,node*wei,int da){
node*l=NULL;node*p=NULL;
p=head;
while(p->next!=wei)
p=p->next;
l=(node*)malloc(sizeof(node));
l->data=da;
l->next=wei;
p->next=l;
return wei;
}
node*weibu1(node*wei){
node*k=NULL;
node*p=NULL;
k->next=wei;
p=k->next;
p->next=wei;
return wei;
}
void print(queue*q)//打印队列
{
node*p=NULL;
p=q->front->next;
while(p!=q->end)//注意是 p!=q->end不是 p->next!=q->end,因为p->next= q->front->next->next;
{
cout<<p->data<<" ";
p=p->next;
}
}
queue*en(queue*q,int da)
{
q->end=weibu(q->front,q->end,da);
return q;
}
queue*out(queue*q)
{
q->end=weibu1(q->end);
return q;
}
queue*init(queue*q,node*head,node*wei)
{
head->next=wei;
wei->next=NULL;
q->front=head;
q->end=wei;
return q;
}
int main()
{
int i,flag=0;
node*head=(node*)malloc(sizeof(node));//队列的头
node*wei=(node*)malloc(sizeof(node));//队列的尾
queue*q=(queue*)malloc(sizeof(queue));//队列
init(q,head,wei);
while(cin>>i)
{
if(i==0)break;
en(q,i);
print(q);cout<<endl;
flag++;
}
for(int j=1;j<=flag;j++)
{
out(q);
print(q);cout<<endl;
}
system("pause");
return 0;
}
队列即基本操作(c链表实现)
最新推荐文章于 2022-04-29 12:43:29 发布