怪异的链表……
查看原帖
怪异的链表……
521890
上帝之鹰楼主2021/10/24 22:11

本菜鸟原来用队列写,在洛谷交拿了70分,后三个测试点超时,于是寻思着用链表,然后发现自己竟用指针造了一个纯正的链表!!!(除了在数据存储的时候偷懒用了个数组,其他没有任何数组的痕迹!!!)然而…… 结果由绿+黑变成了红+黑! 于是只能求大佬来帮改代码(70分就好,后三个点不用管……)

#include<iostream>
using namespace std;

struct ListNode{
	ListNode* next;
	int fruit;
	int num;
    ListNode(int value, int n, ListNode *next1 = nullptr)
    {
        fruit = value;
        next = next1;
        num = n;
    }
};
int n;
int x[200000];
ListNode *FruitList = nullptr;
int main(){
	scanf("%d",&n);
	for(int i=0;i<n;i++){
		scanf("%d",&x[i]);
	}
	for(int i=n-1;i>=0;i--){
		FruitList = new ListNode(x[i], i+1, FruitList);
	}
	ListNode *fl, *fl0;
	while(FruitList!=nullptr){
		int now=FruitList->fruit;
		printf("%d ",FruitList->num);
		FruitList=FruitList->next;
		fl=FruitList;
		while(fl!=nullptr){
			if(now!=fl->fruit)
			{
				now=fl->fruit;
				printf("%d ",fl->num);
				if (fl==FruitList){
					FruitList=FruitList->next;
					fl=FruitList;
				}else{
					fl0->next=fl->next;
				}
			}
			fl0=fl;
			fl=fl->next;
		}
		printf("\n");
		fl=FruitList;
		while(fl!=nullptr){
			printf("%d ",fl->num);
			fl=fl->next;
		}
		printf("\n");
	}
	return 0;
}

求大佬帮忙指正一下错误吧

2021/10/24 22:11
加载中...