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(); //保存
}