首页 > 试题广场 >

假定一个带头节点 * h的单链表的节点结构如下: type

[问答题]
假定一个带头节点 * h的单链表的节点结构如下:
typedef struct node
{   char data;
    struct node * next;
} NodeType;
编写一个函数,删除data成员等于x的所有节点。
推荐
从头开始扫描单链表,pre始终指向当前节点*p的前一个节点,当p所指节点满足条件时,使用语句pre->next=p->next删除p所指节点。函数如下:
NodeType * delnode(NodeType * h,char x)
{
    NodeType * p, * pre;
    pre=h;
    p=pre->next;
    while (p!=NULL)
    {    if (p->date == x)
        {    pre->next=p->next;    /*删除p所指节点*/
           free(p);          /*释放*p节点所占的空间*/
           p=pre->next;        /* * p节点后移一个节点 */
        }
        else
        {    pre=p;            /*pre始终指向* p节点的前一个节点*/
           p=pre->next;        /*p后移一个节点*/
        }
    }
    return(h);
}

发表于 2018-04-16 21:18:23 回复(0)