有关链表释放的问题

sunyuqian 2010-03-21 02:24:43
大家好,对于链表释放有些疑问,用/**/标出,请高手解决

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define TSIZE 20

struct film
{
char title[TSIZE];
int rating;
struct film * next;
};

int main(void)
{
struct film * head = NULL;
struct film * prev,* current;
char input[TSIZE];

printf("输入名字:\n");
while(gets(input) != NULL && input[0] != '\0')
{
current = (struct film *)malloc(sizeof(struct film));
if(head == NULL)
head = current;
else
prev->next = current;
current->next = NULL;
strcpy(current->title,input);
printf("输入等级:\n");
scanf("%d",¤t->rating);
while(getchar() != '\n')
continue;
printf("输入下一个标题:\n");
prev = current;
}
if(head == NULL)
printf("没有数据\n");
else
printf("数据如下:\n");
current = head;
while(current != NULL)
{
printf("%s,%d\n",current->title,current->rating);
current = current->next;
}
current = head;
//////////////////////////////////////////////
while(current != NULL)
{
//方法一
prev = current;
current = current->next;
free(prev);

//方法二
prev = current->next;
free(current);
current = prev;
/*
现在有两种方法,主要对第一种不理解
prev = current;
current = current->next;

prev指向了current
current指向了它的下一个结构,我的问题是当current = current->next; current指向的值已经变了,prev指向current,prev的值为什么没有变呢?
*/
}
////////////////////////////////////////////
return 0;
}
...全文
133 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
sunyuqian 2010-03-21
  • 打赏
  • 举报
回复
谢谢了
wolffan3150 2010-03-21
  • 打赏
  • 举报
回复
lz没弄清楚指针的概念,

current = current->next;
current指向的值已经变了,
prev指向current,
prev的值为什么没有变呢?

指针存放的是变量的地址,不是值,

另外a=b,
b=c,
a的值会变么?
AlanBruce 2010-03-21
  • 打赏
  • 举报
回复

prev = current;
current = current->next;//改变了current指针的指向内存。
//prev指向的内存没有改变啊,所以prev所指的值当然不会变。
//lZ你对指针的理解还需加强啊。

free(prev);

linyongzuo 2010-03-21
  • 打赏
  • 举报
回复
不会变的
prev = current 只是让2个指针指向同一个链表(空间),一个变动和另一个是没有关系。。
current = current->next,指向链表的下一个节点的时候,prev还是指向原来的节点。
只有你再次让prev = current,这样的情况下,prev才变动了。。
昵称很不好取 2010-03-21
  • 打赏
  • 举报
回复

prev = current;
current = current->next; //这里只是改变current的值,prev的值还是currect未改变前的值
free(prev);

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧