手写双向链表为何只有40分,求助!!
查看原帖
手写双向链表为何只有40分,求助!!
370532
SuAnRan楼主2023/2/2 18:07
#include <iostream>

using namespace std;

const int N = 1e5 + 10;

int e[N], l[N], r[N], idx = 1, n;

void right(int i, int k)
{
    e[++ idx] = i;
    l[idx] = k;
    r[idx] = r[k];
    r[k] = idx;
    l[r[idx]] = idx;
}
 
void deletion(int k)
{
    r[l[k]] = r[k];
    l[r[k]] = l[k];
}

int main()
{
    cin >> n;
    r[0] = 1;
    l[1] = 0;
    e[0] = -1;
    e[1] = 1;
    r[1] = -1;
    for(int i = 2; i <= n; i++)
    {
        int k, p;
        cin >> k >> p;
        if(p == 0) right(i,l[k]);
        else right(i,k);
    }
    cin >> n;
    while(n --)
    {
        int k;
        cin >> k;
        deletion(k);
    }
    for(int i = r[0]; i != -1;i = r[i])
    cout << e[i] <<' ';
}

感觉没有任何错误,插在k左边就等于插在了l[k]的右边

2023/2/2 18:07
加载中...