/*收集并存储信息*/
从while循环开始讲吧, 程序要你输入一个电影名, 当gets()函数返回值不为NULL并且输入的字符串的首元素不为空字符时,进入循环体
接着用malloc()函数分配film结构空间,并让结构指针current指向它
首次循环时head = NULL, 所以头指针指向了current, 接着让current->next的值为NULL, 表示暂无下一部影片
然后调用strcpy()函数将input字符串即电影名复制到结构成员current->title中
接着让你输入影片评分,将值放进current->rating中
第二个while循环清空输入行
程序提示输入下一部影片, 然后让结构指针prev指向current
第一次循环结束,head和prev都指向current
当输入的第二个电影名符合while()循环条件,程序继续执行循环体
这里不同的是分支语句, 这次head的值不再是NULL,所以让成员prev->next(这个值前面已经设置为NULL)指向了新分配的内存
/*给出电影列表*/
如果执行到head仍为NULL,则无电影输入
否则将打印输入的电影列表
让结构指针current指向头指针head
当while循环判断current != NULL, 即current不等于空指针时,从头指针开始打印信息, 然后让current->next赋值给current,让current指向下一个结构, 继续打印电影信息
/*任务已完成, 因此释放所分配的内存*/
原代码为:
current = head;
while (current != NUll)
{
free(current);
current = current -> next;
}
是错误的
因为当free了current的空间时,将不能再把current->next赋给current, 它们所处的内存已被释放
正确代码为:
current = head;
while(current != NUll)
{
prev = current->next;
free(current);
current = prev;
}
有不懂的可以继续追问