zoukankan      html  css  js  c++  java
  • 数据结构专题——链表处理A1052.Linked List Sorting(25) (静态链表)

    自己写的,少了异常处理。

    #include <bits/stdc++.h>
    #include<math.h>
    #include <string>
    using namespace std;
    const int maxn = 100010;
    struct Node{//定义静态链表
        int data;
        int address;
        int next;
        bool flag;
    }node[maxn];
    bool cmp(Node a,Node b){
        //return a.data < b.data;
        if(a.flag != b.flag){
            return a.flag > b.flag;
        }else{
            return a.data < b.data;
        }
    }
    int main(){
        int n,addre;
        scanf("%d%d",&n,&addre);
        int add,d,nex;
        for(int i=0;i<n;++i){
            scanf("%d%d%d",&add,&d,&nex);
            node[add].data = d;
            node[add].next = nex;
            node[add].flag = true;
            node[add].address = add;
        }
        sort(node,node+maxn,cmp);
        printf("%d %05d
    ",n,node[0].address);
        for(int i =0;i<n;++i){
            if(i != n-1){
                node[i].next = node[i+1].address;
            }else{
                node[i].next = -1;
            }
            if(i != n-1){
                printf("%05d %d %05d
    ",node[i].address,node[i].data,node[i].next);
            }else{
                printf("%05d %d %d
    ",node[i].address,node[i].data,node[i].next);
            }
        }
        system("pause");
        return 0;
    } 

    由于题目可能会有无效节点,即不在题目给出的首地址开始的链表上

    数据里面还有全部是无效的情况,这时就要根据有效节点的个数特判输出“0 -1”

    #include <bits/stdc++.h>
    #include<math.h>
    #include <string>
    using namespace std;
    const int maxn = 100010;
    struct Node{//定义静态链表
        int data;
        int address;
        int next;
        bool flag;
    }node[maxn];
    bool cmp(Node a,Node b){
        //return a.data < b.data;
        if(a.flag != b.flag){
            return a.flag > b.flag;
        }else{
            return a.data < b.data;
        }
    }
    int main(){
        for(int i=0;i<maxn;++i){
            node[i].flag = false;
        }
        int n,begin,address;
        scanf("%d%d",&n,&begin);
        for(int i =0;i<n;++i){
            scanf("%d",&address);
            scanf("%d%d",&node[address].data,&node[address].next);
            node[address].address = address;
        }
        int count = 0,p = begin;
        //枚举链表,对flag进行标记,同时计数有效节点个数
        while(p != -1){
            node[p].flag = true;
            count++;
            p = node[p].next;
        }
        if(count == 0){//特判,新链表中没有节点时输出0 -1
            printf("0 -1");
        }else{
            //筛选有效节点,并按data从小到大排序
            sort(node,node+maxn,cmp);
            printf("%d %05d
    ",count,node[0].address);
            for(int i=0;i<count;++i){
                if(i != count -1){
                    printf("%05d %d %05d
    ",node[i].address,node[i].data,node[i+1].address);
                }else{
                    printf("%05d %d -1
    ",node[i].address,node[i].data);
                }
            }
        }
        system("pause");
        return 0;
    } 
  • 相关阅读:
    Effective Java 19 Use interfaces only to define types
    Effective Java 18 Prefer interfaces to abstract classes
    Effective Java 17 Design and document for inheritance or else prohibit it
    Effective Java 16 Favor composition over inheritance
    Effective Java 15 Minimize mutability
    Effective Java 14 In public classes, use accessor methods, not public fields
    Effective Java 13 Minimize the accessibility of classes and members
    Effective Java 12 Consider implementing Comparable
    sencha touch SortableList 的使用
    sencha touch dataview 中添加 button 等复杂布局并添加监听事件
  • 原文地址:https://www.cnblogs.com/JasonPeng1/p/12210819.html
Copyright © 2011-2022 走看看