zoukankan      html  css  js  c++  java
  • 74

    用纯数组实现链表。写了有点久,主要是一些细节上的实现有点烦。

    #include <iostream>
    #include <cstdio>
    using namespace std;
    
    struct Node{
        int Pre;
        int Next;
        int Key;
        Node(int p,int n,int k):Pre(p),Next(n),Key(k){}
    };
    Node  *list[100010];
    
    int main()
    {
        int root,N,K;
        cin>>root>>N>>K;
        for(int i=0;i<N;i++)
        {
            int addr,key,next;
            cin>>addr>>key>>next;
            list[addr]=new Node(0,next,key);
        }
        list[root]->Pre=-1;
        for(int addr=root;list[addr]->Next!=-1;addr=list[addr]->Next)
        {
            list[list[addr]->Next]->Pre=addr;
        }
    
        int head=root,cnt,rear=-1;
        for(int i=head,flag=0;i!=-1&&list[i]->Next!=-1;)
        {
            cnt=K;
            while(cnt!=1&&list[i]->Next!=-1)
            {
                i=list[i]->Next;
                cnt--;
            }
            if(cnt==1)
            {
                if(flag==0)
                {
                    root=i;
                    flag=1;
                }
                if(rear!=-1)list[rear]->Next=i;
                head=list[i]->Next;
                while(cnt!=K)
                {
                    list[i]->Next=list[i]->Pre;
                    i=list[i]->Pre;
                    cnt++;
                }
                list[i]->Next=head;
                rear=i;
                i=head;
            }
        }
        while(root!=-1)
        {
            if(list[root]->Next!=-1)printf("%05d %d %05d
    ",root,list[root]->Key,list[root]->Next);
            else printf("%05d %d %d
    ",root,list[root]->Key,list[root]->Next);
            root=list[root]->Next;
        }
    }
  • 相关阅读:
    冒泡排序
    选择排序
    算法分析(54页)
    算法设计分析(44页)
    算法设计分析(44页)
    数据结构——算法设计(12页)方案三
    数据结构——算法设计(12页)方案三
    区间dp
    区间dp
    动态规划的进一步理解
  • 原文地址:https://www.cnblogs.com/KRCheung/p/6661771.html
Copyright © 2011-2022 走看看