对给定的单链表 L ,设计一个算法,删除 L 中值为 x 的结点的直接前驱结点

求完整程序,最还不用模板。
2024-11-23 05:52:58
推荐回答(3个)
回答(1):

1、链表通常有两个类:结点类(Node)和链表类(List)。

2、结点类的实现:,数据,指向下一个数据的指针,构造函数,如果数据类型是自己定义的,重载一些必需的函数。

3、链表类的实现:,构造函数, 插入函数, 删除函数,判断是否为空函数。

4、构造函数的实现:头指针的定义。

5、插入函数的实现思路:判断是否在首位插入。

6、最后判断是否为空实现思路:判断头结点是否为0。

回答(2):

DeleteNode( Node* L, int x)
{
Node* p,q,r;
p = q = r = L;
while(p->next ! = NULL)
{
p = p ->next;
if(p->data == x)
break;
r = q;
q = p;
}
delete q;
r->next = p;
}

回答(3):

//我是用伪代码写的
DelectPIR(LNode &,int x)
{
    LNode *p q;
    p=L→next;
    q=L;
    while(p→next!=NULL)
    {
        if(p→data==x)
            {
                q→next=p→next;
                free(q);
             }
        else
            {
                q=p;
                p=p→next;
            }
    }
}