C 输出节点内容

 

  在接下来的时间里面,我们准备为大家介绍"输出节点内容"。


  (1)在链表中有多个节点,那么,我们如何在链表中找到每一个节点,并把它的内容输出呢?

     其实,在前面的学习中,大家已经了解到,每个节点都会定义一个next成员用于指向下一

     个节点,所以,通过每个节点的next成员就可以找到链表中所有的节点了。

 

 

 

  (2)

       例子:

     

        struct ST  //定义了结构体ST

        {

         int Number;     //编号,用于记录一个整型数

         struct ST * next;  //定义一个ST结构体的指针变量next,指向链表中下一个节点

        };   

 

        void main()

        {

          struct ST * head; //定义了结构体ST的指针变量head作为第一个节点

 

          int len = sizeof( struct ST ); 

 

          head = ( struct ST * ) malloc( len ); //分配第1个节点的内存空间

          head->Number = 1;

    

          head->next = ( struct ST * ) malloc( len ); //分配第2个节点的内存空间

          head->next->Number = 2;

 

          head->next->next = ( struct ST * ) malloc( len );//分配第3个节点的内存空间

          head->next->next->Number = 3;

 

          //---------------------------------------------//

          //以下代码是本次要学习与分析的代码//

          //---------------------------------------------//

 

          head->next->next->next = NULL; //第3个节点的next成员赋值为NULL

                           代表第3个节点后没有其它节点了。

 

          struct ST * p;//定义了结构体ST的指针变量p ,用于指向当前节点

 

          p = head; //让p指向链表中第一个节点head

                 这里是将head的地址赋给了p。所以,p就指向了head。

                 

          

          do

          {

            printf("%d",p->Number);//输出p所指向的节点中,成员Number的值。

            p = p -> next; //让p指向下一个节点。

          }while( p!=NULL); //判断p是否等于NULL空值,如果相等则结束循环。

        }   

 

  例子分析:

  (1)例子中大部分的代码是使用了上一章“动态链表”学习中代码,包括动态生成第1,2,3个节点

     并让它们形成链表的代码。

  (2)我们的本次的分析从定义结构体指针变量p开始,该变量的作用是指向链表中当前的节点。

  (3)首先,我们通过代码p=head,让p指向链表中第一个节点head。

  (4)然后,我们进入到do...while循环中,首先通过printf函数,输出当前节点中的Number成员

     中的值,而当前节点是第一个节点,所以,它的Number成员中的值为1。即输出1。

  (5)然后,我们再执行p = p->next 这行代码,而p中的next成员是指向下一个节点,即第2个节点的

     内存空间址,所以,将它赋给p,就等于将p指向第2个节点

  (6)然后,再判断p是否等于NULL,如果,等于NULL就结束循环,因为,后面没有节点了。

     而在第3个节点中,它的next成员是被赋为NULL的。所以,当处理第3个节点时就会

     结束循环。

 

 

  小结:

    (1)另外定义一个结构体指针变量p用于指向当前节点,就不用再使用head->next->next->next

       这样的代码了。

    (2)注意为链表中最后一个节点的next成员设置一个NULL,空值,代表链表结束。

    (3)把链表中第1个节点赋值给p,就是让p指向了链表中第1个节点,

       然后,通过p调用节点中的next成员,并将next成员所指向的内存空间地址赋给p,

       就是将p指向下一个节点,这样,就可以找到链表中每一个节点了。

 

 

 

   非常好,现在,我们已经掌握了C中的“输出节点内容”这个知识点,但是,如何去运行用它呢?所以,我们就要通过下方的按钮进入到游戏中,然后,运用该知识点去完成任务,这样,才可以加深大家对每个知识点的理解和运用,以及“尽快进入到编程的状态”

 

      不要停留在理论规则上面,快动起来吧!

 

(通过游戏模式学习与训练,需要在电脑上运行)

进入游戏学习与训练