• PAT:1052. Linked List Sorting (25) AC


    #include<stdio.h>
    #include<string.h>
    #include<algorithm>
    using namespace std;
    struct node
    {
      int address;
      int data;
      int next;
      bool tag;
    }Node[100066];
    
    bool cmp(node a,node b)
    {
      if(a.tag!=b.tag)
        return a.tag>b.tag;
      else
        return a.data<b.data;
    }
    
    int main()
    {
      memset(Node,0,sizeof(Node));
      int n,front;
      scanf("%d%d",&n,&front);
      for(int i=0 ; i<n ; ++i)   //记录节点
      {
        int now,data,next;
        scanf("%d%d%d",&now,&data,&next);
        Node[now].address=now;
        Node[now].data=data;
        Node[now].next=next;
      }
      int cnt=0,add;   //记录有相关节点个数
    
      for(add=front ; add!=-1 ; add=Node[add].next)  //找到所有属于头结点链表的相关节点
      {
        ++cnt;
        Node[add].tag=1;
      }
      //输出  
      if(cnt==0)        //特判没有节点的时候
    
      {
        printf("0 -1");
        return 0;
      }
      sort(Node,Node+100066,cmp);
    
      printf("%d ",cnt);
      int tag=0;
      for(int i=0 ; i<100066 ; ++i)
      {
        if(Node[i].tag==1)   //按data升序,大的一定在后面,要遍历到100065,因为memset之后所有初始data都是0
        {
          --cnt;
          if(cnt==0)
          {
            if(0==tag)
            {
              printf("%05d
    ",Node[i].address);
              tag=1;
            }
            printf("%05d %d -1
    ",Node[i].address, Node[i].data);
            break;
          }
          else
          {
            if(0==tag)
            {
              printf("%05d
    ",Node[i].address);
              tag=1;
            }
            printf("%05d %d %05d
    ",Node[i].address, Node[i].data,Node[i+1].address);
          }
        }
      }
      return 0;
    }
  • 相关阅读:
    正则表达式(含递归用法)
    hive tricks
    树的数据结构
    基本排序算法
    佛祖保佑永无BUG
    客户问:“能再便宜点吗”,90%的销售顾问都回答错了?
    AutoMapper的介绍与使用(二)
    AutoMapper的介绍与使用(一)
    hasattr()、getattr()、setattr()函数的使用
    类与对象-内存存储形态
  • 原文地址:https://www.cnblogs.com/Evence/p/4320622.html
Copyright © 2020-2023  润新知