社区讨论
每日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 条回复,欢迎继续交流。
正在加载回复...