问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

分布式系统中的RPC请求经常出现乱序的情况. 写一个算法来将一个乱序的序列保序输出,求C语言大神

发布网友 发布时间:2022-05-17 03:21

我来回答

2个回答

热心网友 时间:2023-09-27 07:05

基本思想是将每一行存入一个链表结点,data表示起始数据,len表示每行元素个数。

struct ListNode    
{  
    int data;  
    int len;  
    ListNode* next;    
};   
  
void InsertNode(ListNode *&pHead, ListNode *pNode)  
{  
    ListNode * pTmp = NULL;  
    if(pNode == NULL)  
    {  
        printf("pNode is NULL!\n");  
        return;  
    }  
    if(pHead == NULL)  
    {  
        pHead = pNode;  
    }  
    else  
    {  
        for(pTmp = pHead;pTmp->next != NULL; pTmp = pTmp->next)  
        ;  
        pTmp->next = pNode;    
    }  
}  
   
  
void SortAndPrint(int a[], int n)  
{  
    ListNode *pHead = NULL;  
    ListNode *temp = NULL;   
    int i = 0;  
    int data = 0;  
    int dataLen = 0;  
    while(i < n)  
    {  
        int j = 0;  
        int len = 0;  
        int moreNum = a[i];  
        int lessNum = a[i];  
  
        //查找小于一个数的连续数出现次数   
        while(j < i)  
        {  
            if(a[j] == lessNum-1)  
            {  
                j = 0;  
                lessNum--;  
                continue;  
            }  
            j++;   
        }  
          
        //只有小于一个数的所有数均出现时才存数据  
        if(lessNum == 1)  
        {  
            j = 0;  
            while(j < i)  
            {  
                if(a[j] == moreNum+1)  
                {  
                    len++;  
                    moreNum++;  
                    j = 0;  
                    continue;  
                }  
                j++;  
            }  
              
            ListNode *p = (ListNode*)malloc(sizeof(ListNode));  
            memset(p, 0, sizeof(ListNode));  
            p->data = a[i];  
            p->len = len;  
            p->next = NULL;  
            InsertNode(pHead, p);  
        }  
        i++;  
    }  
      
    //按顺序打印序列   
    for(temp=pHead; temp!=NULL; temp=temp->next)  
    {  
        dataLen = temp->len;  
        data = temp->data;  
        while(dataLen)  
        {  
            printf("%d,",data++);  
            dataLen--;  
        }  
        printf("%d\n",data);  
    }  
      
    //释放资源   
    ListNode *prev = NULL;  
    ListNode *curr = pHead;  
    while(curr!=NULL)  
    {  
        prev=curr;  
        curr=curr->next;  
        if(prev != NULL)  
        {  
            free(prev);  
            prev = NULL;  
        }  
    }  
}
 
int main(void)  
{  
int a[] = {1,2,5,8,10,4,3,6,9,7};
SortAndPrint(a, 10);
return 0;
}

热心网友 时间:2023-09-27 07:05

太难了,让我想想
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
网络宣传文案心碎,句句获赞! 关于朋友圈上万人点赞转发的说说 人生看的很透彻的经典句子 超现实超扎心的说说大全2019最新 心脏血管堵塞吃什么食物 投资理财有什么前景 pp理财什么情况 P2P理财行业的前景如何? 中国目前的财富管理现状是什么情况? 呼吸皮沙发寿命多久 “皮沙发的呼吸寿命” 呼吸皮沙发寿命多久 如何设计一个分布式文件系统,给出文件和目录的更新算法 区块链技术中的分布式算法的特点是什么? 翻译 内容是关于分布式系统的选举算法 分布式算法的介绍 航天控股是港股通吗? 为什么我的微信搜索到的都是外地人 外地人登录我的微信还扫了当地的场所码行程大数据会显示吗 哈哈 最佳新秀是波多尔斯基 http:&#47;&#47;www.satp.org&#47;satporgtp&#47;countries&#47;bhutan&#47;document&#47;papers&#47;stat_15dec03.htm求大神翻译中文译本 最近对桌游狂热求推荐 NBA张伯伦是哪个国家的,为什么是个中文名 给点波多尔斯基的资料?? 高压油管接头是怎么和橡胶连在一起的 おまつり 的中文是什么意思? 压路机液压**漏油。用绝缘胶带缠上行吗?加个密封胶呢? 不行的话除了换管还能怎么办。。。 はたの ゆい音译成中文 液压油管漏油能用胶水补吗 求波多尔斯基的简介 急! 做高压胶管用的橡胶原材料有什么啊 波多:英文or中文? 大连搬家公司哪家好,价格还便宜! 茶饮料的工艺 小学劳技室如何布置 培智学校师生比例 特教学校劳技教室应配备哪些设备 如何做创造型教师 虹口区第四中心小学的发展优势 长兴华盛虹溪中学的学校布局合理、 电教室和劳技教室是什么单位 描写“秋天冷”的句子有哪些? 劳技室的六种工具是那六类 简短一点的劳技论文 秋天为什么这么冷 秋天为什么冷 秋天为什么会这么冷? 描写秋天很冷的词 秋天冷吗 秋天寒冷的词语 大庆找工作怎么这么难 大庆司机,B2驾照找工作