求剩下代码注释。。。。。。。

void creat_user_list(char* name, char* password, char* ID)  //创建用户链表
{
    User* np = (User*)malloc(sizeof(User));//分配变量空间
    np = user_head;//生成头结点
    while (np->next) np = np->next;
    User* tp = (User*)malloc(sizeof(User));
    strcpy(tp->user_name, name);//复制用户名
    strcpy(tp->password, password);//复制密码
    strcpy(tp->ID, ID);//复制证件号
    tp->admin = 0;
    tp->next = NULL;
    user_initi(tp);                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         //
    np->next = tp;
    save();
}
 

void creat_user_list(char* name, char* password, char* ID)  //创建用户链表
{
    User* np = (User*)malloc(sizeof(User));//分配变量空间 !!!!!这里分配的空间再下以行扔掉了!这里不应该分配空间!!!!!
    np = user_head;//生成头结点!!!应该不时生成头节点,而是指向头节点
    while (np->next) np = np->next;//np指针移动到尾节点
    User* tp = (User*)malloc(sizeof(User)); //为新节点分配空间
    strcpy(tp->user_name, name);//复制用户名
    strcpy(tp->password, password);//复制密码
    strcpy(tp->ID, ID);//复制证件号
    tp->admin = 0; // 非管理员用户
    tp->next = NULL; // 置空新节点的下一个节点,因为它将是新的尾节点
    user_initi(tp);       //初始化新节点     !!!!其实上面5行就是初始化。不知道还有什么需要初始化的。   千万别把刚才初始化的值弄丢了。                                                                                                                                                                                                                                        
    np->next = tp;//把新节点加入链表最后作为新的尾节点。
    save();//保存
}

代码注释如下,如有帮助,请采纳一下,xi谢谢。

void creat_user_list(char* name, char* password, char* ID)  //创建用户链表
{
	User* np = (User*)malloc(sizeof(User));//分配变量空间

	//注意这一行有问题
	np = user_head;//生成头结点(这个地方有问题,上面申请了空间,这行把指针有指向了链表的头,相当于上面的指针没用)


	while (np->next) np = np->next;  //如有有下一个节点,移到下一个节点
	User* tp = (User*)malloc(sizeof(User)); //开辟一块User大小的内存空间,并将指针转成User*类型(可以理解为生成一个User实例,并返回它的指针)
	strcpy(tp->user_name, name);//复制用户名
	strcpy(tp->password, password);//复制密码
	strcpy(tp->ID, ID);//复制证件号
	tp->admin = 0; //tp->admin的值设为0
	tp->next = NULL;//tp的下一个节点是空节点,也就是说tp是最后一个节点
	user_initi(tp); //这里感觉是对tp的一个初始化操作,具体啥意思看这个函数怎么定义的                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   //
	np->next = tp;//设置np的下一个节点为tp(应该是把tp作为np的下一个节点)
	save(); //保存
}