链表

链表

链表包括单链表和双链表,单链表可以用于存图、树,双链表可以优化问题。

单链表:指针单向

双链表:指针双向

一.单链表

考点:单链表的增删

第k个插入的点,下标k-1

单链表:

//单链表 
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+6;
int e[N];
int ne[N];
int idx;
int head;//头指针 
//头插
void add_head(int x) {
	e[idx]=x;
	ne[idx]=head;
	head=idx++;
}
//指定位置插入
void insert(int k,int x) {
	e[idx]=x;
	ne[idx]=ne[k];
	ne[k]=idx++;
}
//指定位置删除
void  drop(int k){
	ne[k] =ne[ne[k]];
}
int main(){
	head=-1;
	int m;
	cin>>m;
	char op;//操作符
	int k,x;//位置k,插入数x 
	while(m--){
		cin>>op;
		if(op=='H'){
			//头插 
			cin>>x;
			add_head(x);
		}
		else if(op=='I'){
			//第k个插入数后插入数字 
			cin>>k>>x;
			insert(k-1,x);
		}
		else if(op=='D') {
			//第k个插入数后删除 
            //删除注意删除第一个点
			cin>>k;
		if(k!=0){drop(k-1);
		}
		else{
		head=ne[head];
		}	
		}
	}
	for(int i=head;i!=-1;i=ne[i]){
		cout<<e[i]<<" ";
	}
	return 0;
}

二.双链表

双链表

//双链表 
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+6;
int l[N];
int r[N];
int e[N];//存放指定位置的数值 
int idx;
//初始化
void init() {
	//下标0用于存头,下标1存尾 
	idx=2;
	r[0]=1;
	l[1]=0;
}
void left_head(int x){//最左端插入
e[idx] =x;
l[idx]=l[r[0]];
r[idx]=r[0];
l[r[0]]	=idx;
r[0]=idx++;
}
//最右端插入 
void right_head(int x){
	e[idx]=x;
	//新插入数指针 
	l[idx]=l[1];
	r[idx]=r[l[1]];
	//修改原来指针
	r[l[1]]=idx;
	l[1]=idx++;
}
//删除
void drop(int k) {
	int t=r[k];
	r[l[k]]=r[k];
	l[t]=l[k];
}
//第k个数左侧插入
void insert_left(int k,int x) {
	e[idx]=x;
	r[idx]=r[l[k]];
	l[idx]=l[k];
	r[l[k]]=idx;
	l[k]=idx++;
}
//第k个数右边插入 
void insert_right(int k,int x) {
	e[idx]=x;
	r[idx]=r[k];
	l[idx]=l[r[k]];

	l[r[k]]=idx;
	r[k] =idx++;
}
 
int main(){
int m;
cin>>m;
string op;
int k,x;
init();
while(m--){
	cin>>op;
	if(op=="L"){
		cin>>x;
		left_head(x);
	}
	else if(op=="R"){
		cin>>x;
		right_head(x);
	}
	else if(op=="D"){
		cin>>k;
		drop(k+1);
	}
	else if(op=="IL"){
		cin>>k>>x;
		insert_left(k+1,x);
	}
	else if(op=="IR"){
		cin>>k>>x;
		insert_right(k+1,x);
	}
}
for(int i=r[0];i!=1;i=r[i]){
	cout<<e[i]<<" ";
}
return 0;
} 

 

posted @   Annaprincess  阅读(10)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示