69,382
社区成员
发帖
与我相关
我的任务
分享
#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;
}
prev = current;
current = current->next;//改变了current指针的指向内存。
//prev指向的内存没有改变啊,所以prev所指的值当然不会变。
//lZ你对指针的理解还需加强啊。
free(prev);
prev = current;
current = current->next; //这里只是改变current的值,prev的值还是currect未改变前的值
free(prev);