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