大峰98
2017-07-11 16:28
采纳率: 70%
浏览 4.0k
已采纳

C语言中的链表赋值问题

我写了一个存储电影名字以及评级的链表,不理解其中以下三点

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",&current->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;

}

十分感谢

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • 温良岁月 2017-07-12 01:20
    已采纳

    1.prev->next=current,
    这是表示把新的结点链接到当前的链表上。
    2.prev=current,
    如果头指针不为空,也就是链表不为空,那么把这个结点串到当前结点,也就是尾结点,如果头指针为空,那当前结点就是头结点。
    3.current=current->next
    相当于在遍历链表

    点赞 评论
  • verphan 2017-07-12 01:16

    第三步"3.current=current->next"应该是更新current指向下一个节点吧?不只是值,里面的next指针也变成下个节点的指针。不知道理解有没有问题

    点赞 评论

相关推荐 更多相似问题