//数据结构 尾插法 #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); }