1074 Reversing Linked List (25分)静态链表,头一回一次ac

①先判断是否会交换结点位置,如本题需要交换,则结构体中设置address来记录本节点地址
②algorithm下的函数要善于应用,不过本题可以直接倒序列输出。
③输入地址用int型,输入后不是五位数,也就是没有前导0不会影响数据的存储,只需要输出时在int地址前加入前导0即可。
④判断在给出起始地址链上的结点信息,以下模板

for(int q=fa;q!=-1;q=p[q].next)
    {
    
    
        p1[num].address=q;
        p1[num].data=p[q].data;
        p1[num].next=p[q].next;
        count++;
        num++;
    }

可以把他们另存一个数组,也可以设置标志位,在链上将flag设置为1,注意结束条件不是q.next!=-1.

#include<bits/stdc++.h>
using namespace std;
struct node{
    
    
    int address,data,next=-1;
}p[100010],p1[100010];
int main(){
    
    
    int fa,n,k,temp,num=0,count=0;
    cin>>fa>>n>>k;
    for(int i=0;i<n;i++)
    {
    
    
        cin>>temp;
        p[temp].address=temp;
        cin>>p[temp].data>>p[temp].next;
    }
    for(int q=fa;q!=-1;q=p[q].next)
    {
    
    
        p1[num].address=q;
        p1[num].data=p[q].data;
        p1[num].next=p[q].next;
        count++;
        num++;
    }
    int b=count/k;
    for(int i=0;i<b;i++)
        reverse(p1+i*k,p1+i*k+k);
    for(int i=0;i<count;i++)
    {
    
    
        if(i!=count-1)
            printf("%05d %d %05d\n",p1[i].address,p1[i].data,p1[i+1].address);
        else
            printf("%05d %d -1\n",p1[i].address,p1[i].data);
    }
    return 0;
}

看看柳落的


#include <iostream>
using namespace std;
int main() {
    
    
    int first, k, n, sum = 0;
    cin >> first >> n >> k;
    int temp, data[100005], next[100005], list[100005], result[100005];
    for (int i = 0; i < n; i++) {
    
    
        cin >> temp;
        cin >> data[temp] >> next[temp];
    }
    while (first != -1) {
    
    
        list[sum++] = first;
        first = next[first];
    }
    for (int i = 0; i < sum; i++) result[i] = list[i];
    for (int i = 0; i < (sum - sum % k); i++)
        result[i] = list[i / k * k + k - 1 - i % k];
    for (int i = 0; i < sum - 1; i++)
        printf("%05d %d %05d\n", result[i], data[result[i]], result[i + 1]);
    printf("%05d %d -1", result[sum - 1], data[result[sum - 1]]);
    return 0;

算了,还是按自己的模板来

猜你喜欢

转载自blog.csdn.net/qq_42835526/article/details/113467890
今日推荐