#include
using namespace std;
struct qnode
{
char ch;
qnode*next;
}; //定义链队的元素空间
struct liqueue
{
qnode*front;
qnode*rear;
};//创建链队的首尾指针
qnode*initqnode(char a[])
{
qnode*h=(qnode*)malloc(sizeof(qnode));//申请存放队列元素的空间
qnode*q=h;
qnode*p=0;
for(int i=0;i
q->ch=a[i];
q->next=(qnode*)malloc(sizeof(qnode));
p=q;
q=q->next;
}
p->next=NULL;
free(q);
for(q=h;q!=NULL;q=q->next)
cout<
return h;
} //初始化队列中的元素
void initqueue(liqueue*L,qnode*P)
{
if(P!=NULL)//传入的队列元素的指针不为空的时候
{
L->front=P;
qnode*p=P;
while(p->next!=NULL)
{p=p->next;}
L->rear=p;
}
else
{
L->front=NULL;L->rear=NULL;
}
}//队首和队尾指针分别指向已创建好的队列的头和尾
void empty(liqueue*L)
{
if(L->front==NULL&&L->rear==NULL)
cout<<"该队列为空."<
cout<<"该队列不为空."<
void inser(liqueue*L,char a)
{
qnode*l=NULL;
if(L->front!=NULL&&L->rear!=NULL)
{ l=L->rear;
l->next=(qnode*)malloc(sizeof(qnode));
l=l->next;
l->ch=a;
l->next=NULL;/*主要错的是这里*/
L->rear = L->rear->next;
}//链队不为空时
else
{ l=L->front;
l=(qnode*)malloc(sizeof(qnode));
l->ch=a;
l->next=NULL;
L->rear=l;
L->rear = L->rear->next;
}//链队为空时
} //插入元素
void outqueue(liqueue*L)
{
qnode*l=L->front;
L->front=l->next;
cout<<"链队中的第一个元素为:"<
}//输出链队的一个元素,同时释放存储该元素的空间
int lenqueue(liqueue*L)
{
qnode*l=L->front;
int i;
for(i=0;l!=L->rear;i++)
{l=l->next;}
return (i+1);
}//记数链队的中元素的个数
void print(liqueue*L)
{
qnode*l=L->front;
for(;l!=NULL;l=l->next)
cout<
cout<
void freeliqueue(liqueue*L)
{ qnode*l=L->front;
for(;l!=NULL;l=l->next)
free(l);
free(L);
}
void myPrint(qnode * head)
{
qnode *p;
p = head;
while(p)
{
cout<
p=p->next;
}
cout<<"\n";
}
int main()
{
char ch[100];
liqueue *L=(liqueue*)malloc(sizeof(liqueue));
cout<<"请输入你初始化的队列元素:"<
qnode*h=initqnode(ch);
cout<<"\n";
initqueue(L,h);
empty(L);
inser(L,'a');
inser(L,'b');
inser(L,'c');
outqueue(L);
print(L);
int i=lenqueue(L);
cout<<"链队中元素的个数为:"< inser(L,'d');
inser(L,'e');
inser(L,'f');
i=lenqueue(L);
cout<<"链队中元素的个数为:"< print(L);
system("PAUSE");
return 0;
}
求加分