怎么描述部分程序啊,求解答

int delete_from_list ( LIST * pList )
{
//判断链表是否存在,是否为空
if ( NULL == pList
|| NULL == pList->pNext )
{
printf ( "数据库数据为空,请先添加商品信息\r\n" );
return ERROR;
}
//定义一个数组
char str[SIZE] = {0};
printf( "请输入需要删除的商品名称\r\n" );
scanf ( "%s", str );

//定义指针变量
LIST *p = pList->pNext;
LIST *q = pList;

while ( NULL != p )
{
    //查找商品,显示商品信息
    if ( 0 == strcmp ( p->data.name, str ) )
    {
        q->pNext = p->pNext;
        free ( p );
        p = NULL;
        printf ( "商品 %s 信息已被删除!!\r\n", str );
        return OK;
    }
    p = p->pNext;
    q = q->pNext;

}
printf ( "您输入的商品名称没有找到!!\r\n" );
return ERROR;

}

这个函数是做了一个删除链表节点的功能。
首先判断链表是否为空,如果不为空。则开始循环链表查找要删除的节点。
找到了之后将当前节点的下一个节点指向下下个节点。则代表删除成功