キューヘッダポインタのないループチェーン
4622 ワード
/* */
#include<stdio.h>
typedef struct linkqueueNode
{
int data;
struct linkqueueNode *next;
}LkQueNode;
typedef struct linkque
{
LkQueNode *rear;
}LkQue;
/* */
void InitQueue(LkQue *LQ)
{
LkQueNode *p;
p=malloc(sizeof(LkQueNode));
LQ->rear=p;
p->next=LQ->rear; /* , 。*/
}
/* */
void EnQueue(LkQue *LQ,int x)
{
LkQueNode *p;
p=malloc(sizeof(LkQueNode));/* */
p->data=x;
p->next=LQ->rear->next;
LQ->rear->next=p; /* */
LQ->rear=p; /* */
}
/* */
void Outqueue(LkQue *LQ,int *x)
{
LkQueNode *p,*h;
if(LQ->rear==LQ->rear->next)
printf(" !
");
else
{
h=LQ->rear->next;/* */
p=h->next; /* */
*x=p->data;
h->next=p->next;
if(p==LQ->rear) /* , 。*/
LQ->rear=h;
free(p);
}
}
main()
{
LkQue LQ;
InitQueue(&LQ);
int i,n=0,x;
printf("---- ----
");
printf(" :
");
scanf("%d",&x);
while(x!=0)
{
printf(" :
");
EnQueue(&LQ,x);
n++;
scanf("%d",&x);
}
printf("---- ----
");
for(i=1;i<=n;i++)
{
Outqueue(&LQ,&x);
printf("%d\t",x);
}
}