zoukankan      html  css  js  c++  java
  • 7-2 Reversing Linked List (25分)

     

     解题思路:

    1、结点地址是固定5位整数,故可用数组按结点地址存放

    2、利用辅助数组存放排好序的链表(不在链表上的多余结点不处理),当k=1时,链表不翻转,k>1时按要求翻转链表

    #include <stdio.h>
    #define Max 100000
    typedef struct {
        int Addr;
        int Data;
        int Next;
    } Node[Max];
    int main() {
        int n,k,i,j=0,t=0,pos,cnt;
        scanf("%d%d%d",&pos,&n,&k);
        Node list,tmp;
        int x,y,z;
        for(i=0; i<n; i++) {
            scanf("%d%d%d",&x,&y,&z);
            list[x].Addr=x;
            list[x].Data=y;
            list[x].Next=z;
        }
        while(pos!=-1) {
            tmp[j++]=list[pos];
            pos=list[pos].Next;
        }
        if(k>1) {
            cnt=j/k;
            int s=0,r=j%k;
            while(cnt--) {
                for(i=s+k-1; i>s; i--) {
                    tmp[i].Next=tmp[i-1].Addr;
                    list[t++]=tmp[i];
                }
                if(s+2*k<=j) {
                    tmp[i].Next=tmp[s+2*k-1].Addr;
                    list[t++]=tmp[i];
                    s+=k;
                }
            }
            if(r) {
                tmp[i].Next=tmp[j-r].Addr;
                list[t++]=tmp[i];
            } else {
                tmp[i].Next=-1;
                list[t++]=tmp[i];
            }
            while(t<j) {
                list[t++]=tmp[j-r];
                r--;
            }
            for(i=0; i<t; i++) {
                if(i!=t-1)
                    printf("%05d %d %05d
    ",list[i].Addr,list[i].Data,list[i].Next);
                else
                    printf("%05d %d %d
    ",list[i].Addr,list[i].Data,list[i].Next);
            }
        } else {
            for(i=0; i<j; i++) {
                if(i!=j-1)
                    printf("%05d %d %05d
    ",tmp[i].Addr,tmp[i].Data,tmp[i].Next);
                else
                    printf("%05d %d %d
    ",tmp[i].Addr,tmp[i].Data,tmp[i].Next);
            }
        }
    
        return 0;
    }

  • 相关阅读:
    php+redis简易消息队列
    Linux关闭selinux的方法(临时关闭和永久关闭)
    Linux清理buff/cache
    Centos禁止ping的设置方法
    浅谈mysql触发器
    mysql中left join right join inner join用法分析
    mysql主从配置详解(图文)
    mysql中的几种判断语句
    mysql锁表处理方法
    Mysql里的order by与索引
  • 原文地址:https://www.cnblogs.com/snzhong/p/12761060.html
Copyright © 2011-2022 走看看