首页 > 其他分享 >双链表

双链表

时间:2022-11-30 22:15:45浏览次数:39  
标签:idx int cin else 插入 add 双链

实现一个双链表,双链表初始为空,支持5 种操作:

  1. 在最左侧插入一个数;
  2. 在最右侧插入一个数;
  3. 将第k 个插入的数删除;
  4. 在第k 个插入的数左侧插入一个数;
  5. 在第 k 个插入的数右侧插入一个数

现在要对该链表进行 M次操作,进行完所有操作后,从左到右输出整个链表。

#include <iostream>
using namespace std;
const int N = 100010;
int e[N], l[N], r[N], idx;

void init () {
    r[0] = 1, l[1] = 0;
    idx = 2;
}

void add (int k, int x) {
    e[idx] = x;
    l[idx] = k, r[idx] = r[k];
    l[r[k]] = idx, r[k] = idx;
    idx++;
}

void remove (int k) {
    r[l[k]] = r[k];
    l[r[k]] = l[k];
}

int main() {
    init ();
    int m;
    cin >> m;
    while (m--) {
        string s;
        cin >> s;
        if (s == "L") {
            int x;
            cin >> x;
            add (0, x);
        }
        else if (s == "R") {
            int x;
            cin >> x;
            add (l[1], x);
        }
        else if (s == "D") {
            int k;
            cin >> k;
            remove (k + 1);
        }
        else if (s == "IL") {
            int k, x;
            cin >> k >> x;
            add (l[k + 1], x);
        }
        else {
            int k, x;
            cin >> k >> x;
            add (k + 1, x);
        }
    }
    
    for (int i = r[0]; i != 1; i = r[i]) cout << e[i] << " ";
    return 0;
}

  

标签:idx,int,cin,else,插入,add,双链
From: https://www.cnblogs.com/leetothemoon/p/16939898.html

相关文章

  • 双链表
    //e[]表示节点的值,l[]表示节点的左指针,r[]表示节点的右指针,idx表示当前用到了哪个节点inte[N],l[N],r[N],idx;//初始化voidinit(){//0是左端点,1是右端点......
  • 双链表实现栈,和队列
    packageclass03;importjava.util.LinkedList;importjava.util.Queue;importjava.util.Stack;/***双链表实现栈,和队列*/publicclassCode03_DoubleEndsQu......
  • 单链表,双链表反转
    packageclass03;importjava.util.ArrayList;importjava.util.Collections;importjava.util.List;/***单链表,双链表反转*/publicclassCode01_ReverseLis......
  • JAVA--LinkedList底层双链表添加元素超详细
     集合里面存储的都是对象    添加第一个元素    添加第二个元素    依次往后添加对象/元素。   first指向linkedList集合里存储的第......
  • 双链表
    双向链表在双向链表中,每个结点都有两个指针域,用于存放前驱结点地址和后继结点地址。与单链表相比,双向链表可以进行两个方向的查找。1.初始化双向链表1.1双向链表的储存......
  • 双链表和循环链表
    一、结构体定义1.双链表typedefstructDLNode{ intdata; structDLNode*prior,*next;}DLNode;2.循环链表//同双链表二、操作1.尾插法建立双链表voidcreat......
  • WLAN下配置双链路冷备
    实验背景企业内网无线终端数量越来越多,为了保证无线业务的稳定性,作为网络工程师的你决定采购一台AC,部署双链路冷备技术,与原有的AC进行主备备份,提高无线业务的可靠性  ......