社区讨论

每日RE

B3631单向链表参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@mj3ndtvz
此快照首次捕获于
2025/12/13 09:59
2 个月前
此快照最后确认于
2025/12/14 19:10
2 个月前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
template <typename T>
struct node{
	T value; 
	node *next;
    
};
template <typename T>
unsigned listlen(node<T> *h){
	node<T> *p;
	p=h->next;
	unsigned len=0;
	while(p!=NULL){
	len++;
	p=p->next;}
	return len;
}
template <typename T>
void insert(node<T> *head,int i,T x){ 
    if(!head||i<0) return;
	node<T> *p,*s;
	s=new node<T>;
	s->value=x;
	p=head;
	for(int j=0;j<i;j++)
		p=p->next;
	s->next=p->next;
	p->next=s;
}
template <typename T>
void del(node<T> *head,int x=-1){
	node<T> *p,*p1;
	p=head;
	if(x==-1) {
	head->next=NULL;
	return;}
	if(x>listlen(head))return;
	p=p1=head;
	for(int j=0;j<x+1;j++)
		p1=p1->next;
	for(int j=0;j<x-1;j++)
		p=p->next;
	p->next=p1; 
}
template <typename T>
T& getl(node<T> *head,int i){
	node<T> *p;
	p=head;
	for(int j=0;j<i;j++)
		p=p->next;
	return p->value;
}
template <typename T>
node<T> *creat(int n){
	node<T> *h,*p,*r;
	h=new node<T>; h->next=NULL;
	r=h;
	for(int i=0;i<n;i++){
		p=new node<T>; 
		p->value=0;
		p->next=NULL;
		r->next=p;
		r=p;
	}
	return h;
}




node<int>* l;

void B3631(int a,int b=-1,int c=-1){
    switch(a){
        case 1:insert<int>(l,b,c);break;
        case 2:
            if(b+1>listlen<int>(l))cout<<0;
            else cout<<getl<int>(l,b+1);
            break;
        case 3:del<int>(l,b);break;
    }
}int n,x[100000],y[100000],z[100000];
int main(){
    cin>>n;
    l=creat<int>(1);
    getl(l,1)=1;
    for(int i=0;i<n;i++){
        cin>>x[i]>>y[i];
        if(x[i]==1)cin>>z[i];
    }
    for(int i=0;i<n;i++){
        if(x[i]==1)
        B3631(x[i],y[i],z[i]);
        else B3631(x[i],y[i]);
    }
	return 0;
}

回复

0 条回复,欢迎继续交流。

正在加载回复...