编程语言
首页 > 编程语言> > 磊磊零基础打卡算法:day12 c++静态单链表

磊磊零基础打卡算法:day12 c++静态单链表

作者:互联网

5.15

静态单链表


简单的方法:

成员变量:

int e[N],//存放节点的值
 ne[N],存放结点的next
 head,头结点指针
 idx;变化的指针

例题

链接:

https://www.acwing.com/problem/content/828/


 ps:自己画的图有点小丑,见谅

 

 

 

#include "iostream"
using namespace std;
const int N = 100010;
int head, e[N], ne[N], idx;
void init() {
    head = -1;
    idx = 0;
}  //初始化链表
void add_to_head(int x) {
    e[idx] = x, ne[idx] = head, head = idx++;
}  //将x的值存在idx位置,将idx的下一个指向head结点,然后将idx,head指针变化位置,经典的头插法
void add(int k, int x) {  //插入k后面的位置
    e[idx] = x, ne[idx] = ne[k], ne[k] = idx++;
}
void remove(int k) {  //删除k结点的后一个结点
    ne[k] = ne[ne[k]];
}
int main() {
    int m;
    cin >> m;
    init();
    while (m--) {
        int k, x;
        char p;
        cin >> p;
        if (p == 'H') {
            cin >> x;
            add_to_head(x);
        } else if (p == 'D') {
            cin >> k;
            if (!k)
                head = ne[head];
            else
                remove(k - 1);
        } else {
            cin >> k >> x;
            add(k - 1, x);
        }
    }
    for (int i = head; i != -1; i = ne[i])
        //判断结束的位置其实是head=-1,也就是最开始的位置,i每次变化指针位置,指向下一个;
        cout << e[i] << " ";
    return 0;
}

标签:head,idx,int,结点,ne,c++,磊磊,打卡,void
来源: https://www.cnblogs.com/gwl999/p/16273833.html