P7912 纯链表60pts求调
查看原帖
P7912 纯链表60pts求调
620253
MvemiY楼主2022/8/3 10:00
#include<bits/stdc++.h>
using namespace std;
int n, len, head = 1;
typedef struct DLNode{
	struct fruit{
		int num, ao;
	}data;
	DLNode *nxt, *prior;
}DLNode, *LinkList;
LinkList L, s, R;
void init(){
	L = new DLNode;
	L->nxt = NULL;
	R = L;
	cin >> n;
	len = n;
	for(int i = 1; i <= n; i++){
	    s = new DLNode;
	    scanf("%d", &s->data.ao);
	    s->data.num = i;
	    R->nxt = s;
	    s->prior = R;
	    R = s;
	}
	R->nxt = NULL;
}
void del(LinkList p){
	cout << p->data.num << ' ';
	if(len == 1)
		exit(0);
	if(p == L->nxt){
		LinkList tem = L->nxt;
		tem->nxt->prior = L;
		L = L->nxt;
		L->prior = NULL;
		free(L->prior);
	}
	else if(p == R){
		R = R->prior;
		free(R->nxt);
		R->nxt = NULL;
	}
	else {
		LinkList q;
		q = p->nxt;
		p->prior->nxt = q;
		q->prior = p->prior;
		free(p);
	}
	len--;
}
int main(){
	init();
	while(len){
		int F = 1 - L->nxt->data.ao; 
		LinkList p = L->nxt;
		for(; p ; )
			if(p && p->data.ao != F){
				if(p != R){
					p = p->nxt;
					del(p->prior);
				}
				else{
					del(p);
					break;
				} 
				F = 1 - F;
			}
			else p = p->nxt;
		cout << endl;
	}
	return 0;
}
2022/8/3 10:00
加载中...