有钱的小白菜 发表于 2020-4-10 12:39:51

循环链表的表名指的是头指针还是头结点呢

求助:当要在第一个位置插入元素时,尾指针是从*pNode开始遍历的,这个*pNode是头结点吗?可是记得小甲鱼之前讲的表名是头指针哎,有点蒙了,请大佬们赐教!


/*链表存储结构的定义*/
typedef struct CLinkList
{
    int data;
    struct CLinkList *next;
}node;

/*插入结点*/
/*参数:链表的第一个结点,插入的位置*/
//别管他多少*,反正*pNode就是一个指向node类型的指针
//指针的指针
void ds_insert(node **pNode , int i)
{
    node *temp;
    node *target;
    node *p;
    int item;
    int j = 1;

    printf("输入要插入结点的值:");
    scanf("%d", &item);

    if(i == 1)
        { //新插入的结点作为第一个结点
      temp = (node *)malloc(sizeof(struct CLinkList));

                if(!temp)
            exit(0);

                temp->data = item;

      /*寻找到最后一个结点*/
      for(target = (*pNode); target->next != (*pNode); target = target->next)
                        //*pNode是头结点 ?
                        ;

                temp->next = (*pNode);
      target->next = temp;
      *pNode = temp;
    }
    else
        {
      target = *pNode;

                for( ; j < (i-1); ++j )
                {
                        target = target->next;
                }
               
                // target指向第三个元素的
               
                temp = (node *)malloc(sizeof(struct CLinkList));

                if(!temp)
            exit(0);

                temp->data = item;
               
      p = target->next;
      target->next = temp;
      temp->next = p;
    }
}

KevinHu 发表于 2020-4-10 13:33:02

是头结点

详情:传送门

啦啦啦13 发表于 2020-4-10 17:42:41

先说结论:*pNode是头结点
头指针是以确定线性表中第一个元素对应的存储位置,也就是说pNode是头指针
而头指针pNode里面的内容可以认为是头结点,即*pNode=头结点
举个例子:
int i=1
int *p=i
假设i为头结点
这里的p相当于头指针
*p就是头结点

页: [1]
查看完整版本: 循环链表的表名指的是头指针还是头结点呢