//链式队列与链表相似
//入队时,就是不断尾插的过程
//出队时,就是不断读取链表头结点的过程
//删除操作只能在队首进行(头指针后移)
//插入操作只能在队尾进行(分配新单元挂链挪指针)
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct node{
int data;
struct node *next;
}ElemSN;
ElemSN *CreateQueue(int a[],int n)//入队
{
ElemSN *front,*rear;
front=rear=(ElemSN *)malloc(sizeof(ElemSN));
front->data=a[0];
front->next=NULL;
for(int i=1;i<n;i++){
rear=rear->next=(ElemSN *)malloc(sizeof(ElemSN));
rear->data=a[i];
rear->next=NULL;
}
return front;
}
void PrintQueue(ElemSN *front)//出队
{
while(front){
printf("%3d",front->data);
front=front->next;
}
}
int main()
{
int n;
printf("Please input the n:");//输入数组长度
scanf("%d",&n);
int *a;
a=(int *)malloc(sizeof(int)*n);
for(int i=0;i<n;i++){
scanf("%d",a+i);
}
ElemSN *head=NULL;
head=CreateQueue(a,n);
PrintQueue(head);
return 0;
}