int InitCLinkList(CLinkList list)
{
int data = 0;
CLinkNode target = NULL;
CLinkNode* head_node = NULL;
printf("请输入结点数据,0代表结束初始化:\n");
while (1)
{
scanf("%d", &data);
if (data == 0)
break; //退出循环标志,用户输入0 表示结束输入数据
if (*list == NULL)
{
CLinkNode* head= (CLinkNode*)malloc(sizeof(CLinkNode));
*list = head;//链表指向头结点
CLinkNode* node = (CLinkNode*)malloc(sizeof(CLinkNode));
node->data = data;
node->next = head;
head->next = node;
}else{
//如果循环链表不为空 链尾部插入数据
//通过循环 找到尾结点,怎样判断是否是尾结点?当结点的指针域指向头结点时为尾结点,这样才能形成环嘛
//循环结束后target 指向尾结点
//for 循环下好好理解下!target初始化为第一个结点指针
for (target = (*list)->next; target->next != *list; target = target->next);
head_node = target->next;
CLinkNode* node = (CLinkNode*)malloc(sizeof(CLinkNode));
node->data = data;
node->next = head_node; //这个已经指向头了。
target->next = node;//将新结点插入尾部 //在用头指向它。那中间的不都没有了吗。 不理解。
}
}
return OK;
}