当前位置: 首页 > news >正文

07-单链表-单链表基本操作

题目

 

来源

826. 单链表 - AcWing题库

思路

详见代码,主要思想就是用数组来模拟链表的创建。数组其实跟静态链表等价,由于动态链表动态new对于大数据太过于耗时,因此采用数组的方式。那数组如何起到链表的效果?用下标来索引。

代码

#include<bits/stdc++.h>
using namespace std;
const int N=100010;
int head,e[N],ne[N],idx;
//初始化
void init(){
    head=-1;
    idx=0;
}
//插入到头结点之后(把新的点插到头结点的位置80%)
void add2head(int x){
    e[idx]=x;
    ne[idx]=head; //第一步
    head=idx; //第二步
    idx++;
}
//将节点插入到下标是K的后面
void add2k(int k,int x){
    e[idx]=x;
    ne[idx]=ne[k]; //第一步
    ne[k]=idx; //第二步
    idx++;
}
//将下标是K的点删掉
void del2k(int k){
    ne[k]=ne[ne[k]];
}

int main(){
    int n;
    cin>>n;
    init();
    while(n--){
        char op;
        int x,k;
        cin>>op;
        if(op=='H'){
            cin>>x;
            add2head(x);
        }
        else if(op=='D'){
            cin>>k;
            if(k==0)head=ne[head];
            //k=0,删除头结点,相当于将head指向head下下个点
            del2k(k-1); //因为0号点是第一个插入的点
        }else if(op=='I'){
            cin>>k>>x;
            add2k(k-1,x);//因为0号点是第一个插入的点
        }
    }
    for(int i=head;i!=-1;i=ne[i]){
        cout<<e[i]<<" ";
    }
    cout<<endl;
    
    return 0;
}

相关文章:

  • 【Pandas】pandas Series cat
  • 【计算机网络】浏览器组成、工作原理、页面渲染流程...
  • 国内首款载重1吨级无人运输机TP1000首飞成功 2026年投入应急救援
  • CAN总线的CC帧和FD帧之间如何仲裁
  • 2025-03-17 NO.1 Quest3 开发环境配置教程
  • 初阶数据结构习题【16】(5二叉树)——965. 单值二叉树
  • langchain如何并行调用运行接口
  • 代码随想录算法训练营第六十五天| 图论10
  • 《Android启动侦探团:追踪Launcher启动的“最后一公里”》
  • 设计模式之抽象工厂模式
  • element plus组件Carousel组件3个卡片平铺样式改造
  • docker nginx
  • A - 整数的简单问题/A - A Simple Problem with Integers
  • 《算法笔记》8.2小节——搜索专题->广度优先搜索(BFS)问题 E: 【宽搜入门】巧妙取量
  • 基于 Prometheus + Grafana 监控微服务和数据库
  • 职业教育五金建设改革解析
  • C# 一文读懂委托与事件
  • Web Component 教程(二):如何有效管理和使用自定义属性
  • ✎ 一次有趣的经历
  • Cross-Silo Prototypical Calibration for Federated Learning with Non-IID Data
  • 消息人士称以色列政府初步同意扩大对加沙军事行动
  • 网红“丢那猩”丢石块闯祸,起哄游客难逃责任
  • “五一”假期首日迎出游高峰:火车站人流“堪比春运”,热门景区门票预订量同比增三成
  • 三大上市猪企:前瞻应对饲料原材料价格波动
  • 滨江集团:一季度营收225.07亿元,净利润9.75亿元
  • 招商蛇口:一季度营收约204亿元,净利润约4.45亿元