C 插入节点

 

  在接下来的时间里面,我们准备为大家介绍"插入节点"。


  (1)在往链表中插入节点时,首先,要把插入点的前一个节点指向插入节点,同时,将插入节点

     指向下一个节点,以保证插入新节点后,链表不会出现断开的情况。

 

 

 

   例子:

     

        struct ST  //定义了结构体ST

        {

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

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

        };   

 

        void main()

        {

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

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

 

          int len = sizeof( struct ST ); //获取结构体ST的大小并保存于len中

 

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

                            成功分配后的内存空间地址给head,所以,

                            head指向第1个节点

          head->Number = 1;

          p1 = head;     //让p1指向第一个节点

    

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

                             并让第1个节点的next成员指向第2个节点

          p1 = p1->next;    //让p1指向第二个节点         

          p1->Number = 2;

 

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

                            并让第2个节点的next成员指向第3个节点

          p1 = p1->next;    //让p1指向第三个节点 

          p1->Number = 3;

          p1->next = NULL;  //向next成员赋值为NULL,表示后面没有节点了。

 

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

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

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

           

          //目前链表中有3个节点,假如,现在我们要在第1个节点与2个节点之间插入新节点

          //首先,我们要将p1指向第2个节点,而目前p1是指向第3个节点。

 

           struct ST * NewNode; //定义了结构体ST的指针变量NewNode指向新节点

     

           NewNode = ( struct ST * ) malloc( len );//为新节点分配内存空间。

 

           p1 = head->next; //通过head->next对p1赋值,就可以让p1指向第2个节点

                      因为,head当前是指向第1个节点,而它的next成员就

                      指向第2个节点。

 

            head->next = NewNode; //让第1个节点指向新节点NewNode,而目前的head

                        是指向第1个节点,所以,将新节点NewNode的内存

                        地址赋值给head->next就让第1个节点指

                        向NewNode。

 

           NewNode->next = p1;   //让新节点NewNode的next成员指向p1,即指向原来

                        的第2个节点

 

                        这样,就完成了在第1个节点与第2个节点之间插入

                        新节点NewNode的工作了。而且,在插入后,第1个

                        节点指向新节点,而新节点又指向原来第2个节点。

                        这样,就保证了链表没有断开。

           

        }   

 

    

 

 

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

 

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

 

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

进入游戏学习与训练