我写了一个存储电影名字以及评级的链表,不理解其中以下三点
1.prev->next=current,
2.prev=current,
3.current=current->next
我目前的理解是:1.把current这个结构体指针变量的地址赋值给prev中的结构体指针变量next;2.把current这个结构体指针变量的地址赋值给结构体指针变量prev;3.令结构体指针变量current的值等于结构体指针变量next的值
不知道对吗?
以下是我的源代码:
#include
#include //malloc();原型
#include //strcpy();原型
#define SIZE 20 //最大字数
typedef struct film
{
char title[SIZE];
int rating;
struct film * next;
}Film;
int main()
{
Film *head=NULL;
Film *prev,*current;
char title2[SIZE];
//写入
puts("Scan first title(0-20 charecter)");
while(gets(title2)!=EOF&&title2[0]!='\0')
{
current = (Film *)malloc(sizeof(Film));
//存第一个指针head
if(head==NULL)
{
head=current;
}
//current's address 赋给next
else
prev->next=current;
strcpy(current->title,title2);
puts("Rating is...(0-10)");
scanf("%d",¤t->rating);
getchar();
//节点更换
puts("Enter next movie title");
prev=current;
}
//显示
if(head)
{
current=head;
while(current!=NULL)
{
printf("the title is %s,the rating is %d\n",current->title,current->rating);
current=current->next; //把下一个结构体指针的地址给current
}
}
else
puts("Not find any dota...");
//清内存
current=head;
while(current)
{
free(current);
current=current->next;
}
puts("OK!");
return 0;
}
十分感谢