算法竞赛阶段二-数据结构(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;

}

相关推荐
临床数据科学和人工智能兴趣组1 小时前
在R语言中, 使用 as.factor() 函数转换数值型变量
开发语言·r语言
不会就选b4 小时前
算法日常・每日刷题--<贪心>25
数据结构·算法
andyweike4 小时前
php笔记
开发语言·笔记·php
蒸蒸yyyyzwd5 小时前
秋招学习笔记 day46
c++·八股
Circ.5 小时前
Python 调试 Litellm 本地大模型接口:模型列表与对话接口实操踩坑记录
开发语言·python
现任明教教主~7 小时前
Thinkphp站群蜘蛛池SaaS系统YanyvSEO含多用户/积分/六大引擎计费/易支付对接
java·开发语言·spring
Zhou1411367 小时前
SpringSecurity_02_授权与高级功能
开发语言·python
Cccp.1238 小时前
【leetcode】(七)前缀树和贪心算法
数据结构·leetcode·贪心算法
千里码aicood8 小时前
基于CART算法的图书分类系统设计与实现
数据库·算法·分类
码匠许师傅8 小时前
【C++三方组件】cpp-httplib:一个头文件起 HTTP 服务
开发语言·c++·http