码迷,mamicode.com
首页 > Windows程序 > 详细

AcWing 826. 单链表

时间:2019-11-04 09:26:50      阅读:90      评论:0      收藏:0      [点我收藏+]

标签:com   ret   数字   div   class   cti   remove   else   等于   

https://www.acwing.com/activity/content/problem/content/863/1/

#include <iostream>
using namespace std;
const int N = 100010;
// head 表示头结点的指向哪个点 
// e[i] 表示节点i的值
// ne[i] 表示节点i的next指针是多少
// idx 存储当前已经用到了哪个点
int head, e[N], ne[N], idx;
// 初始化
void init() {
    head = -1;
    idx = 0;//一开始位0 
}
// 将x插到头结点
void add_to_head(int x) {
    e[idx] = x;  //记录x 
    ne[idx] = head; //将这个点指向的变为原来head指向的 
    head = idx ++ ;//head指向idx 
}
// 将x插到下标是k的点后面
void add(int k, int x) {
    e[idx] = x;
    ne[idx] = ne[k]; //指向原来k指向的数字 
    ne[k] = idx ++ ;//k指向idx 
}
// 将下标是k的点后面的点删掉
void remove(int k) {
    ne[k] = ne[ne[k]];
}
int main() {
    int m;
    cin >> m;
    init();//初始化 
    while (m -- ) {
        int k, x;
        char op;
        cin >> op;
        if (op == H) {
            cin >> x;
            add_to_head(x);
        } else if (op == D) {
            cin >> k;
            if (!k) head = ne[head];  //特判等于0 
            else remove(k - 1);
        } else {
            cin >> k >> x;
            add(k - 1, x);  //一号点是第二个插入的,所以都要减一 
        }
    }
    for (int i = head; i != -1; i = ne[i]) cout << e[i] <<  ;
    cout << endl;
    return 0;
}

 

AcWing 826. 单链表

标签:com   ret   数字   div   class   cti   remove   else   等于   

原文地址:https://www.cnblogs.com/QingyuYYYYY/p/11790096.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!