liyuanjun 发表于 2016-7-22 10:47:39

请求大神帮忙

/*初始化循环链表*/
void ds_init(node **pNode)                        
{
    int item;
    node *temp;
    node *target;

    printf("输入结点的值,输入0完成初始化\n");

        while(1)
        {
      scanf("%d", &item);
      fflush(stdin);

                if(item == 0)
            return;

      if((*pNode) == NULL)                         //////////////////////////////这个空表示的是什么意思呢?
                { /*循环链表中只有一个结点*/
                        *pNode = (node*)malloc(sizeof(struct CLinkList));
                       
                        if(!(*pNode))
                                exit(0);
                       
                        (*pNode)->data = item;//小甲鱼说这个pNode是第一个结点,那既然是第一个结点的话就是头结点,头结点怎么会有赋给它数值呢?
                  
                        (*pNode)->next = *pNode;
                }
      else
                {
            /*找到next指向第一个结点的结点*/
            for(target = (*pNode); target->next != (*pNode); target = target->next)
                                ;

            /*生成一个新的结点*/
            temp = (node *)malloc(sizeof(struct CLinkList));

                        if(!temp)
                                exit(0);

                        temp->data = item;
            temp->next = *pNode;
            target->next = temp;
      }
    }

m9128213 发表于 2016-7-22 13:32:02

m9128213 发表于 2016-7-22 15:00:12

liyuanjun 发表于 2016-7-22 20:33:52

m9128213 发表于 2016-7-22 15:00
为空表示首指针没有指向任何东西 如果首指针没有指向任何东西 就malloc(struct)一个首节点
首节点产生了...

可是头指针的数据域不是不储存任何信息,或者只储存线性表长度之类的附加信息吗?

liyuanjun 发表于 2016-7-22 20:34:26

m9128213 发表于 2016-7-22 15:00
为空表示首指针没有指向任何东西 如果首指针没有指向任何东西 就malloc(struct)一个首节点
首节点产生了...

说错了,不是头指针,是头结点

liyuanjun 发表于 2016-7-22 20:37:15

m9128213 发表于 2016-7-22 15:00
为空表示首指针没有指向任何东西 如果首指针没有指向任何东西 就malloc(struct)一个首节点
首节点产生了...

(*pNode)->next = *pNode; 这两个(*pNode)不是指同一个东西吧?

liyuanjun 发表于 2016-7-22 20:46:11

m9128213 发表于 2016-7-22 15:00
为空表示首指针没有指向任何东西 如果首指针没有指向任何东西 就malloc(struct)一个首节点
首节点产生了...

谢谢你的指点,我突然明白了

m9128213 发表于 2016-7-22 20:49:03

1850946447 发表于 2016-7-30 17:53:42

第一个那个空代表这个指针还没有指向表示这个头结点还没有生成空间
第二个头结点赋不赋值只看程序员自己但是循环链表中如果头结点不赋值那么最后首尾相接时需要尾结点和第二结点相连

immortalfaith 发表于 2016-9-8 14:21:35

顶一下

飘渺463431810 发表于 2017-1-7 15:31:50

学习了,谢谢
页: [1]
查看完整版本: 请求大神帮忙