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

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
    相当于在遍历链表

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料