c语言弱鸡求救
查看原帖
c语言弱鸡求救
390313
Zhang_kg楼主2021/2/8 21:21

这是我写的代码,五个测试点都是RE

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<malloc.h>
typedef struct node{
	int num;
	struct node* bef;
	struct node* aft;
}jj;
int main(){
	int n, k, p;
	scanf("%d", &n);
	int i;
	jj* head=(jj*)calloc(1, sizeof(jj));
	jj* a=(jj*)calloc(1, sizeof(jj));
	head->aft=a;
	a->num=1; 
	a->bef=head;
	jj* c[100005]={0};
	c[1]=a;
	for(i=1; i<=n-1; i++){
		jj* b=(jj*)calloc(1, sizeof(jj));
		//j* b=(jj*)calloc(1, sizeof(jj));
		b->num=i+1;
		scanf("%d%d", &k, &p);
		if(p==0){
			if(c[k]->bef==head){
				b->aft=head->aft;
				b->bef=head;
				head->aft=b;
				(b->aft)->bef=b; 
			}else{
				b->bef=c[k]->bef;
				c[k]->bef->aft=b;
				c[k]->bef=b;
				b->aft=c[k];
			}
			c[i+1]=b;
		}else if(p==1){
			if(c[k]->aft==NULL){
				b->aft=NULL;
				c[k]->aft=b;
				b->bef=c[k];
			}else{
				b->aft=c[k]->aft;
				c[k]->aft->bef=b;
				b->bef=c[k];
				c[k]->aft=b;
			}
			c[k+1]=b;
		}
	}
	int m;
	scanf("%d", &m);
	while(m--){
		scanf("%d", &k);
		if(c[k]==NULL) continue;
		else{
			if(c[k]->bef==head){
				head->aft=c[k]->aft;
				c[k]->aft->bef=head;
			}else if(c[k]->aft==NULL){
				c[k]->bef->aft=NULL;
			}else{
				c[k]->bef->aft=c[k]->aft;
				c[k]->aft->bef=c[k]->bef;
			}
			c[k]=NULL;
		}
	}
	head=head->aft;
	while(head){
		printf("%d ", head->num);
		head=head->aft;
	}
	return 0;
}

球球各位大佬指一条明路

2021/2/8 21:21
加载中...