已知一个带头结点的循环链表为list,设计一个算法,删除链表中数据域值为item的所有结点。

高分请教下,已知一个带头结点的循环链表为list,设计一个算法,删除链表中数据域值为item的所有结点。
最新回答
接住路过的风

2024-04-19 12:59:01

编译通过的,在链表L(1,2,1)中删除j等于1(para)的

#include <stdio.h>
#include <list>
using namespace std;
typedef struct{
        int j;
}T;
int main()
{
    list<T> L;
    T t;
    list<T>::iterator it;
    int para = 1;
    t.j = 1;
    L.push_back(t);
    t.j = 2;
    L.push_back(t);
    t.j = 1;
    L.push_back(t);
    for (it=L.begin();it!=L.end(); it++)
    {
        if (it->j == para)
        {
            it = L.erase(it);
        }
        else
        {
            it++;
        }
    }
    for (it=L.begin();it!=L.end(); it++)
    {
        printf("j=%d\n", it->j);
    }
    return 0;
}
她似明媚

2024-04-19 16:17:40

书上没有这种例子吗?简单的遍历删除。