//数据结构 尾插法

#include<stdio.h>
#include<stdlib.h>

//typedef Etype int;

//单向循环链表
typedef struct LNode{
    int data;                 //存放元素值
    struct LNode *next;            //指向后继结点
}LNode,*Linklist;                //单链表结点类型

//尾插法
Linklist Creat_List(){
    Linklist head = (Linklist )malloc(sizeof(LNode));
    Linklist node = NULL;        //定义工作指针
    Linklist end = NULL;            //定义尾指针
    head->next = NULL;            //初始化头结点的下一个结点为NULL
    end = head;                    //链表为空时,尾指针指向头结点
    int count = 0;
    int datain = 0;                //定义输入的data
    scanf("%d",&count);
    for(int i=0;i<count;i++){
        node = (LNode*)malloc(sizeof(LNode));        //为新结点开辟内存
        scanf("%d",&datain);                        
        node->data = datain;                          //新结点数据域赋值
        end->next = node;                                //新结点赋值给end的下一个
        end = node;                                    //重新定义尾结点
    }
    end->next = NULL;
    return head;
}

//输出链表
void output(Linklist head){
    //if(head->next == head)
       // return;
    Linklist a = head->next;
    while(a!=NULL){
        printf("%d",a->data);
        printf(" ");
        a=a->next;
    }
}

int main(void){
    int n=0;
    Linklist head = Creat_List();
    output(head);
}