数据结构delete_list函数的理解

数据结构非循环单链表的删除函数:

//删除节点,删除第pos个节点,pos的值从1开始
bool delete_list(PNODE pHead, int pos, int * pVal)
{
	int i = 0;
	PNODE p = pHead;
	while (NULL != p->pNext && i < pos - 1)
	{
		p = p->pNext;
		++i;
	}
	if (i > pos - 1 || NULL == p->pNext)
		return false;
	//如果程序能执行到这一行说明p已经指向了第pos-1个结点,并且第pos个节点是存在的
	PNODE q = p->pNext;  //q指向待删除的pos结点
	*pVal = q->data;     //删除的数据存放在pVal
	p->pNext = p->pNext->pNext;    //删除p节点后面的pos结点
	free(q);     //释放q所指向的节点所占的内存
	q = NULL;
	return true;
}

理解在代码注释写了,代码运行过程理解如下:举例当pos的值为3的时候,运行过程图:


猜你喜欢

转载自blog.csdn.net/Loongstyle/article/details/80378185