数据表记录包含表索引和数值,请对表索引相同的记录进行合并,即将相同索引的数值进行求和运算,输出按照key值升序进行输出。

输入描述:

先输入键值对的个数
然后输入成对的index和value值,以空格隔开

输出描述:

输出合并后的键值对(多行)

#include <iostream>
#include <stdio.h> using namespace std; struct table{
int id;
int value;
struct table *next;
}; typedef struct table *LinkList; void AddNode(LinkList *HeadList,int id,int value,int i)
{
LinkList p = *HeadList;
for(int j = ;j < i;j++)
p = p->next;
LinkList node = (LinkList)malloc(sizeof(struct table));
p->next = node;
node->id = id;
node->value = value;
node->next = NULL; }
void swap(LinkList *Node1,LinkList *Node2)
{
LinkList Node3 = (LinkList)malloc(sizeof(struct table));
LinkList node1 = *Node1;
LinkList node2 = *Node2; Node3->id = node1->id;
Node3->value = node1->value; node1->id = node2->id;
node1->value = node2->value; node2->id = Node3->id;
node2->value = Node3->value;
}
void Rank(LinkList *HeadList)
{
LinkList p = *HeadList;
p = p->next;
while(p != NULL){
LinkList p_p = *HeadList;
p_p = p_p->next;
while(p_p != NULL){
if(p->id < p_p->id)
swap(&p,&p_p);
p_p = p_p->next;
}
p = p->next;
}
}
void ListPrint(LinkList *HeadList){
LinkList p = *HeadList;
p = p->next;
while(p != NULL){
while(p->id == p->next->id){
if(p->next != NULL)
{
p->next->value += p->value;
p = p->next;
}
else
break;
}
printf("%d %d",p->id,p->value);
printf("\n");
p = p->next; }
}
int main()
{
int id,value;
LinkList list = (LinkList)malloc(sizeof(struct table));
int n;
list->id = ;
list->value = ;
while(scanf("%d",&n) != EOF){
for(int i = ;i < n;i++){
scanf("%d %d",&id,&value);
AddNode(&list,id,value,i);
}
Rank(&list);
ListPrint(&list);
}
free(list);
return ;
}

ACM-单向链表的操作的更多相关文章

  1. java对单向单向链表的操作

    概述:众所周知,数据对于数据的存储时连续的,也就是说在计算机的内存中是一个整体的.连续的.不间断的ADT数据结构.伴随的问题也会随之出现,这样其实对于内存的动态分配是不灵活的.而链表具备这个优点.因此 ...

  2. c语言之单向链表

    0x00 什么是链表 链表可以说是一种最为基础的数据结构了,而单向链表更是基础中的基础.链表是由一组元素以特定的顺序组合或链接在一起的,不同元素之间在逻辑上相邻,但是在物理上并不一定相邻.在维护一组数 ...

  3. ZT C语言链表操作(新增单向链表的逆序建立)

    这个不好懂,不如看 转贴:C语言链表基本操作http://www.cnblogs.com/jeanschen/p/3542668.html ZT 链表逆序http://www.cnblogs.com/ ...

  4. 复习下C 链表操作(单向链表)

    Object-C 作为C 的包装语言(运行时.消息机制).如果不熟悉C 的话实在玩得太肤浅. 随便深入oc 内部都会接触到C. runtime .GCD.Block.消息机制... 所有强大的功能无不 ...

  5. C++中如何对单向链表操作

    */ * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:text.cpp * 作者:常轩 * 微信公众号:Worldhe ...

  6. Linus:利用二级指针删除单向链表

    Linus大神在slashdot上回答一些编程爱好者的提问,其中一个人问他什么样的代码是他所喜好的,大婶表述了自己一些观点之后,举了一个指针的例子,解释了什么才是core low-level codi ...

  7. 【转】Linus:利用二级指针删除单向链表

    原文作者:陈皓 原文链接:http://coolshell.cn/articles/8990.html 感谢网友full_of_bull投递此文(注:此文最初发表在这个这里,我对原文后半段修改了许多, ...

  8. C语言实现单向链表及其各种排序(含快排,选择,插入,冒泡)

    #include<stdio.h> #include<malloc.h> #define LEN sizeof(struct Student) struct Student / ...

  9. 输入一个单向链表,输出该链表中倒数第K个结点

    输入一个单向链表,输出该链表中倒数第K个结点,具体实现如下: #include <iostream> using namespace std; struct LinkNode { publ ...

  10. 单向链表JAVA代码

        //单向链表类 publicclassLinkList{       //结点类     publicclassNode{         publicObject data;         ...

随机推荐

  1. SQL注入:HEAD注入

    HEAD注入原理 HEAD注入顾名思义就是在传参的时候,将我们的数据构建在http头部. HEAD注入的使用场景 为什么网站要记录你的ip或者请求头,是为了方便你的二次登陆,区分你的登陆地址和设备,可 ...

  2. CodeForces-1217D (拓扑排序/dfs 判环)

    题意 https://vjudge.net/problem/CodeForces-1217D 请给一个有向图着色,使得没有一个环只有一个颜色,您需要最小化使用颜色的数量. 思路 因为是有向图,每个环两 ...

  3. mysql使用——sql实现随机取一条数据

    最近在做接口测试的时候,测试数据是从数据库查询的,但是当需要并发多次去调用接口时,如果sql只是单纯的进行了limit取值,那并发的时候肯定会每条数据都一样. 因此,研究了下sql随机取一条数据的写法 ...

  4. Day11 - Python基础11 模块学习——optparse

    Python 有两个内建的模块用于处理命令行参数: 一个是 getopt,<Deep in python>一书中也有提到,只能简单处理 命令行参数: 另一个是 optparse,它功能强大 ...

  5. 面向对象程序设计(JAVA) 第15周学习指导及要求

    2019面向对象程序设计(Java) 第15周学习指导及要求(2019.12.6-2019.12.13)   学习目标 (1) 掌握菜单组件用途及常用API: (2) 掌握对话框组件用途及常用API: ...

  6. 05. Go 语言函数

    Go 语言函数 函数是组织好的.可重复使用的.用来实现单一或相关联功能的代码段,其可以提高应用的模块性和代码的重复利用率. Go 语言支持普通函数.匿名函数和闭包,从设计上对函数进行了优化和改进,让函 ...

  7. 2019-2020-1 20199305《Linux内核原理与分析》第六周作业

    系统调用的三层机制(下) (一)给MenuOS增加命令 (1)打开虚拟机,首先用rm -rf menu指令删除当前的menu目录,然后用git clone重新克隆一个新版本的menu,进入menu,运 ...

  8. jenkins报错:Problem accessing /jenkins/. Reason: HTTP ERROR 404

    这是一个Jenkins的Bug.临时解决方法是:在浏览器中手工输入:http://<ip>:<port>.不要访问"/jenkins"这个路径.

  9. <DFS & BFS> 286 339 (BFS)364

    286. Walls and Gates DFS: 思路是,搜索0的位置,每找到一个0,以其周围四个相邻点为起点,开始 DFS 遍历,并带入深度值1,如果遇到的值大于当前深度值,将位置值赋为当前深度值 ...

  10. 安装office2010出现的一些问题

    在往新的台式机安装office2010时,因为一些原因没有使用虚拟光驱安装,而是解压后安装,安装过程中提示错误,无法找到excel.zh-cn中的msi文件,但是查看安装目录文件发现是有的. 后续尝试 ...