算法竞赛阶段二-数据结构(36)数据结构双向链表模拟实现

//#include<bits/stdc++.h>

#include<iostream>

using namespace std;

const int N=1e5+10;

//定义

int eN,preN,neN,h,id;

int mpN;

//头插

// 兵 y

// x

void push_front (int x)

{

id++;

eid=x;

mpx=id;

preid=h;

neid=neh;

//先修改新节点

// prene\[id]=id; ne【id】就是ne【h】看上边,刚赋的值

prene\[h]=id;

// preid=h;

neh=id; //最后改这个

}

// 遍历打印,无视pre即可

void print()

{

for(int i=neh;i;i=nei)

{

cout<<ei<<" ";

}cout<<endl;

}

// 按值查找,mp数组优化·

int find(int x)

{

return (mpx);

}

// 任意位置(存储位置,下标)之后插入

// p

// 1 3

// x

void insert(int p,int x)

{

id++;

eid=x;

mpx=id;

preid=p;

neid=nep;

// preid=p;

prene\[p]=id;

nep=id;

}

//任意位置(存储位置,下标)之前插入

// p

// 1 2

// x

void insret_front(int p,int x)

{

id++;

eid=x;

mpx=id;

neid=p;

preid=prep;

nepre\[p]=id;

prep=id;

}

//删除任意位置元素

// p

// 1 2

// x

void erase(int p)

{

// mpp=0; 这个不对

mpe\[p]=0;

nepre\[p]=nep;

prene\[p]=prep;

}

int main()

{

for(int i=0;i<6;i++)

{

push_front(i);

}

print();

cout<< find(0)<<endl;

cout<< find(2)<<endl;

insert(1,33);

print();

insert(7,88);

print();

cout<< find(33)<<endl;

cout<< find(88)<<endl;

insret_front(1,66);

print();

insret_front(3,33);

print();

insret_front(8,100);

print();

insret_front(9,666);

print();

erase(1);

print();

cout<< find(100)<<endl;

erase(11);

print();

erase(7);

print();

erase(find(666));

print();

return 0;

}

相关推荐
To_OC3 小时前
LC 51 N 皇后:我以为难的是回溯,结果栽在了对角线下标
javascript·算法·leetcode
Scott9999HH3 小时前
【IIoT流量实战】蒸汽管道阀门全关却仍有流量?用 Python 实现涡街信号 FFT 频谱分析与温压全补偿积算网关,深度拆解靠谱的涡街流量计厂家硬核技术标准
开发语言·python
2401_841495644 小时前
【操作系统】进程同步与互斥实验报告
c++·算法·操作系统·进程·并发·同步·互斥
fqbqrr4 小时前
2607C++,soui与安卓
c++·soui
码智社4 小时前
AES加密原理详解及Java实现加解密实战
java·开发语言
AI云海4 小时前
python 列表、元组、集合和字典
开发语言·python
萧瑟余晖5 小时前
JDK 26 新特性详解
java·开发语言
马优晨6 小时前
Freemarker 完整讲解(后端 Java 模板引擎)
java·开发语言·freemarker·freemarker 完整讲解·freemarker模板引擎
fqbqrr8 小时前
2607C++,使用微软detours勾挂工具
c++