剑指offer 6:链表(从头到尾打印链表)

链表的数据结构

struct ListNode
{
	int value;
	ListNode* next;
};

  那么在链表的末尾添加一个节点的代码如下:

void insert(ListNode** pHead, int value)
{
	ListNode* pNew = new ListNode;
	pNew->value = value;
	pNew->next = NULL;
	if (*pHead == NULL)
	{
		*pHead = pNew;
	}
	else
	{
		ListNode* temp = *pHead;
		while (temp->next != NULL)
		{
			temp = temp->next;
		}
		pNode->next = pNew;
	}
}

  在上面的代码中,我们要特别注意函数的第一个参数是pHead是一个指向指针的指针。当我们往一个空链表中插入一个节点时,新插入的节点就是链表的头指针。由于此时会改动头指针,因此必须把pHead参数设为指向指针的指针,否则出了这个函数pHead仍然是一个空指针。

这这里指针的指针可以这样理解——pHead是一个指向指针的指针,*pHead是一个指针,链表的结点也是指针类型,那么pHead就可以指向多个指针,这样就可以把链表的所有结点连接起来形成一条链。

猜你喜欢

转载自www.cnblogs.com/wuyepeng/p/9624837.html