精华内容
下载资源
问答
  • 给定一个无图,此无增加一个顶点。 输入 多组数据,每组m+2行。第一行有两个数字n和m,代表有n个顶点和m条边。顶点编号为1到n。第二行到第m+1行每行有两个数字h和k,代表边依附两个顶点。第m+2行有...

    欢迎登录北京林业大学OJ系统
    http://www.bjfuacm.com

    275基于邻接表的新顶点的增加

    描述
    给定一个无向图,在此无向图中增加一个新顶点。
    输入
    多组数据,每组m+2行。第一行有两个数字n和m,代表有n个顶点和m条边。顶点编号为1到n。第二行到第m+1行每行有两个数字h和k,代表边依附的两个顶点。第m+2行有一个数字f,代表新插入的顶点编号。当n和m都等于0时,输入结束
    输出
    每组数据输出n+1行。为增加顶点后的邻接表。每两个数字之间用空格隔开。
    输入样例 1
    3 2
    1 2
    2 3
    4
    2 1
    1 2
    4
    0 0
    输出样例 1
    1 2
    2 3 1
    3 2
    4
    1 2
    2 1
    4

    #include<iostream>
    using namespace std;
    #define OK 0
    #define ERROR -1
    #define MAX 100
    typedef struct LNode
    {
    	int data;
    	struct LNode *next;
    }LNode,*LinkList;
    typedef struct
    {
    	int vexnum;
     	int arcnum;
    	LinkList V[MAX];
    }ALGragh;
    int CreateUDN(ALGragh &G,int vexnum,int arcnum)
    {
    	G.vexnum=vexnum;
    	G.arcnum=arcnum;
    	if(G.vexnum>MAX)
        	return ERROR;
      	for(int i=1;i<=vexnum;i++)
    	{
    		G.V[i]=new LNode;
    		G.V[i]->data=i;
    		G.V[i]->next=NULL;
    	}
      	while(arcnum--)
    	{
          	int x,y;
    		cin>>x>>y;
          	LinkList p=new LNode;
    		p->data=y;
    		p->next=G.V[x]->next;	
          	G.V[x]->next=p;	
            LinkList q=new LNode;
    		q->data=x;
    		q->next=G.V[y]->next;
    		G.V[y]->next=q;
    	}
      	return OK;
    }
    int InsertVex(ALGragh &G)
    {
    	G.vexnum++;
    	G.V[G.vexnum]=new LNode;
    	cin>>G.V[G.vexnum]->data;
    	G.V[G.vexnum]->next=NULL;
    	return OK;
    }
    int PrintGraph(ALGragh G)
    {  
      	for(int i=1;i<=G.vexnum;i++)
        {
    		LinkList p=G.V[i];
    		while(p->next)
    		{
    			cout<<p->data<<" "; 
    			p=p->next;
    		}
    		cout<<p->data<<endl; 
        }
        return OK;
    }
    int main()
    {
    	int n,m;
    	while(cin>>n>>m&&n!=0&&m!=0)
    	{
          	ALGragh G;
           	CreateUDN(G,n,m);
         	InsertVex(G);	
    	   	PrintGraph(G);
    	}
    	return 0;
    }
    
    展开全文
  • 给定一个无图,此无增加一条边。 输入 多组数据,每组m+2行。第一行有两个数字n和m,代表有n个顶点和m条边。顶点编号为1到n。第二行到第m+1行每行有两个数字h和k,代表边依附两个顶点。第m+2行有两个...

    欢迎登录北京林业大学OJ系统
    http://www.bjfuacm.com

    278基于邻接表的新边的增加

    描述
    给定一个无向图,在此无向图中增加一条边。
    输入
    多组数据,每组m+2行。第一行有两个数字n和m,代表有n个顶点和m条边。顶点编号为1到n。第二行到第m+1行每行有两个数字h和k,代表边依附的两个顶点。第m+2行有两个数字f和g,代表增加的边所依附的两个顶点。当n和m都等于0时,输入结束。
    输出
    每组数据输出n行。为增加边后的邻接表。每两个数字之间用空格隔开。
    输入样例 1
    3 2
    1 2
    2 3
    3 1
    3 1
    1 2
    1 3
    0 0
    输出样例 1
    1 3 2
    2 3 1
    3 1 2
    1 3 2
    2 1
    3 1

    #include<iostream>
    using namespace std;
    #define OK 0
    #define ERROR -1
    #define MAX 100
    typedef struct LNode
    {
    	int data;
    	struct LNode *next;
    }LNode,*LinkList;
    typedef struct
    {
    	int vexnum;
     	int arcnum;
    	LinkList V[MAX];
    }ALGragh;
    int CreateUDN(ALGragh &G,int vexnum,int arcnum)
    {
    	G.vexnum=vexnum;
    	G.arcnum=arcnum;
    	if(G.vexnum>MAX)
        	return ERROR;
      	for(int i=1;i<=vexnum;i++)
    	{
    		G.V[i]=new LNode;
    		G.V[i]->data=i;
    		G.V[i]->next=NULL;
    	}
      	while(arcnum--)
    	{
          	int x,y;
    		cin>>x>>y;
          	LinkList p=new LNode;
    		p->data=y;
    		p->next=G.V[x]->next;	
          	G.V[x]->next=p;	
            LinkList q=new LNode;
    		q->data=x;
    		q->next=G.V[y]->next;
    		G.V[y]->next=q;
    	}
      	return OK;
    }
    int InsertArc(ALGragh &G)
    {
       	int x,y;
      	cin>>x>>y;
      	LinkList p=new LNode;
    	p->data=y;
    	p->next=G.V[x]->next;	
      	G.V[x]->next=p;
      	G.arcnum++;
        LinkList q=new LNode;
    	q->data=x;
      	q->next=G.V[y]->next;
    	G.V[y]->next=q;
     	G.arcnum++;
      	return OK;
    }
    int PrintGraph(ALGragh G)
    {  
      	for(int i=1;i<=G.vexnum;i++)
        {
          LinkList p=G.V[i];
          while(p->next)
          {
              cout<<p->data<<" "; 
              p=p->next;
          }
          cout<<p->data<<endl; 
        }
        return OK;
    }
    int main()
    {
    	int n,m;
    	while(cin>>n>>m&&n!=0&&m!=0)
    	{
          	ALGragh G;
           	CreateUDN(G,n,m);
         	InsertArc(G);	
    	   	PrintGraph(G);
    	}
    	return 0;
    }
    
    展开全文
  • 以链表形式文件输入数据,建立信息,然后想着写个输出函数看看是否输入 进去了,结果编译运行什么也没有显示。但编译通过没问题,不知道代码哪里 出来问题,想请教各位大神们帮忙看看代码,看看哪里有什么问题。...
  • 演示算法之前,需先弹出的小窗口中输入线性表的数据元素及算法参数 i(插入或删除的位置)和 b(被插的数据元素)的值。顺序的图示窗口演示屏的上方,链表的图示窗口左侧。 2. 有序的操作 算法演示屏...
  • 数据结构演示软件

    2013-06-02 21:32:36
    演示算法之前,需先弹出的小窗口中输入线性表的数据元素及算法参数 i(插入或删除的位置)和 b(被插的数据元素)的值。顺序的图示窗口演示屏的上方,链表的图示窗口左侧。 2. 有序的操作 算法演示屏...
  • 目录题目描述思路解析代码实现python几种数据类型可变性 题目描述 输入一个链表,反转链表后,输出链表表头。 示例 输入:{1,2,3} 返回值:{3,2,1} 思路解析 首先定义列表首元素下一个元素next并保存...

    题目描述

    • 输入一个链表,反转链表后,输出新链表的表头。
    • 示例
      输入:{1,2,3}
      返回值:{3,2,1}

    思路解析

    在这里插入图片描述

    • 首先定义列表首元素的下一个元素next并保存在nex变量中
    • 令单链表首元素指向空(pre的初始值为空)
    • 将pre指针指向单链表首元素
    • 将单链表首元素指针挪向next
    • 按上面四个步骤循环,则head指针将会逐渐后移到单链表尾部,再次移动单链表头指针时,为空,此时退出循环,返回pre值,此时由于head指向的是空,所以pre指向的是单链表末尾
    • 之后调用反转函数,将定义好的单链表输出即可

    代码实现

    class node(object):
        def __init__(self, elem, next=None):
            self.elem = elem
            self.next = next
    
    
    def reverlist(phead):
        if phead == None or phead.next == None:
            return phead
        pre = None
        cur = phead
        while cur is not None:
            next = cur.next
            cur.next = pre
            pre = cur
            cur = next
        return pre
    
    
    if __name__ == '__main__':
        l1 = node(1)
        l1.next = node(2)
        l1.next.next = node(3)
        l = reverlist(l1)
        print(l.elem, l.next.elem, l.next.next.elem)
        print(l1)
    
    • 执行结果如下所示:
      在这里插入图片描述

    python中几种数据类型的可变性

    在这里插入图片描述

    • 注意:集合中的所有元素必须是不可变类型,否则会报错
      在这里插入图片描述
    展开全文
  • printf("取出单链表中的数据元素 4\n"); printf(" 结束程序 0\n"); printf("/////////////////////////\n"); } int main() { int n,m,i,e; LinkList L = NULL,p = NULL; InitList(L); printf(...
  • Kettle之数据同步

    2021-03-23 20:15:57
    现在业务提出新的需求:除前面描述外,还要实现源表数据删除,目标表数据同样删除。 虽然我极其不推荐这样做,原因有三: (1)数据库不应该真正存在delete操作,如果确实要删除一条数据的话,理论上应该数据库...

    之前的业务需求是实现数据的增量同步,具体描述为:新增数据插入,变化数据更新(增改),我使用 表输入+插入更新控件 即可实现。

    现在业务提出新的需求:除前面描述外,还要实现源表数据删除时,目标表数据同样删除。
    虽然我极其不推荐这样做,原因有三:
                (1)数据库不应该真正存在delete操作,如果确实要删除一条数据的话,理论上应该在数据库中设置标志位,执行update,不向前端业务显示,但数据仍存在数据库中,便于追溯和回退;
                (2)ETL实现删除数据的操作,一旦出现问题,很难查找和解释原因,容易出现互相扯皮和推诿现象;
                (3)我需要重新开发ETL。虽然个人难以接受,奈何业务需求是天,我也得硬着头皮去完成,之后可能发生的事情,只能“走一步看一步”,听天由命了。记录关键过程如下:

     

    1.   转换的核心对象共4个,包括2个输入、1个合并记录和1个数据同步。文本文件输出是为了看合并记录结果的。源数据和目标数据必须为同样结构的表。

         下图实现功能:将目标数据表的数据同步到源数据表。两者数据最终完全一样。

         实现原理:比较源表和目标表的行数据,然后生成合并表,数据同步控件根据合并表的结果,将最新的数据同步到源数据表。和源数据表相比,目标数据表新增的数据新增到源数据表,目标数据表删除的在源数表删除,目标数据表修改的在源数据表修改,目标数据表没有变化的数据在源数据表不进行改变。最终结果是

    【表输入在输入中找:合并记录在链接中;数据同步在输出中】分别设置源数据和目标数据,其中记录数量限制为0就是全部同步。
           

     

    2.合并记录设置。新数据源的数据同步到旧数据源。旧数据源是要被数据同步控件覆盖的数据,也就是数据同步控件的目标表;根据新数据源数据和旧数据源的比较是否有增删改查来给标志位赋值。标志字段随便起名即可(要符合命名规范)。“”匹配的关键字”最好是主键(唯一值勉强也行),数据字段是要同步的列(注意,一定要包括关键字段,否则目标数据该列就是空值,千万注意!!)。如下图:

     

    3.合并结果如下。合并源数据表和目标数据表的所有行数据,然后每行加入标志字段。表示字段的值deleted、changed、identical、new。这些值和下面的数据同步控件高级选项填写的值必须一样。

     

    4.合并完成后,标志字段的值有4种,分别是:

    Identical” : 关键字段在新旧数据源中都存在,且域值相同

    “changed” : 关键字段在新旧数据源中都存在,但域值不同

    new” :  旧数据源中没有找到该关键字段

    deleted”:  新数据源中没有找到关键字段

     

    5.数据同步的配置需要注意以下几点:

    (1)  不论是查询的关键字,还是更新字段,都不要写标志字段;其他字段根据业务需求,进行设置;

    (2)  高级标签中的规则要定义好,否则会报“It was not possible to find operation field [null] in the input stream!”错误。

    (3)  此处设置的数据表必须为源数据表。数据同步控件根据合并记录控件输出的合并表的标志位的值,来决定哪些行的数据需要输出到源数据表。new的数据新增到源数据表,changed的数据更新,deleted的数据删除,indentical的数据不进行改变。

    下图中的值必须是new、changed、deleted,和合并记录控件输出的合并结果中的标志位的值一样。数据同步控件根据此处设置的值来和合并结果标志位的值进行比较,来判断每行数据的增删改查。

    5.根据需要是定时操作,还是手工操作,如果定时的话,重新建个作业,设定开始相关的配置即可。

    另外需要强调一下,如果源数据和目标数据字段不一样的话,来源数据可以用as来改变列名,并一定注意名称和列顺序一致。

     

    6.保存作业到本地。可以将保存的作业上传到linux系统、windows系统上定时运行。 

    参考:Kettle之数据同步

    展开全文
  • 大话数据结构

    2018-12-14 16:02:18
    也就是树的定义之还用到了树的概念,这是比较新的一种定义方法。 6.2.1结点分类 152 6.2.2结点间关系 152 6.2.3树的其他相关概念 153 6.3树的抽象数据类型 154 6.4树的存储结构 155 6.4.1双亲表示法 155 ...
  • b、append,在表中追加记录 c、replace,删除旧记录,替换成新装载记录 d、truncate,同上 DOS窗口下使用SQL*Loader命令实现数据的输入 C:\>sqlldr userid=system/manager control=input.ctl 默认...
  • 数据结构实验

    2012-04-13 09:55:47
    若二者相等,则查找成功,否则根据比较的结果确定下次查找的范围是中间记录的前半部分还是后半部分,然后在新的查找范围内进行同样的查找,如此重复下去,直到在表中找到关键字与给定值相等的记录,或者确定表中...
  • 由于数据存储器不但要能随时读取存放其各个单元内的数据,而且还需随时写进新的数据,或改写原来的数据。因此,数据存储器需由随机存储器RAM构成。RAM存储器断电,所存数据随即丢失,这实际应用有时会带来...
  • 数据结构 1800题》

    热门讨论 2012-12-27 16:52:03
    (3)给定的逻辑结构及其存储表示上可以定义不同的运算集合,从而得到不同的数据结构。这样说 法对吗?举例说明之。 (4)评价各种不同数据结构的标准是什么? 5.评价一个好的算法,您是从哪几方面来考虑的? ...
  • PNG,.tif - TIFF,无扩展名 - Esri Grid,以地理数据库形式存储栅格数据,不应栅格数据名称添加文件扩展名。 将栅格数据集存储到 JPEG 文件、JPEG 2000 文件、TIFF 文件或地理数据库,可以指定压缩类型...
  • API数据驱动测试(DDT)描述了一种测试方法,其中测试输入数据和断言键以及期望值均从表中驱动。 通常,该表是一个电子表格,每行代表一个测试步骤或一个API调用。 DDT的优点是,当将新的测试方案添加到被测产品...
  • 105页的数据结构和算法 142页的Spring 58页的过滤器和监听器 30页的HTTP xxxx页的Redis:待更新...(最新首发公众号,导航更新可能有延迟) Hibernate AJAX ...... :coffee:Java基础 初学者学Java常遇到的问题,我...
  • 046招 对单元格中输入错误的数据设置出错警告 047招 如何单元格中圈释无效数据 048招 快速为其他单元格的数据设置相同的有效性 049招 使用“查找”功能快速搜索数据 050招 使用“替换”功能快速对内容进行更改 2.3...
  • 报m的人出列,将他的密码作为新的m值,从他顺时针方向上的下一个人开始重新从1报数,如此下去,直至所有人全部出列为止。试设计一个程序求出出列顺序。 [基本要求] 利用单向循环链表存储结构模拟此过程,按照出列...
  • 046招 对单元格中输入错误的数据设置出错警告 047招 如何单元格中圈释无效数据 048招 快速为其他单元格的数据设置相同的有效性 049招 使用“查找”功能快速搜索数据 050招 使用“替换”功能快速对内容进行更改 2.3...
  • 存取对象变量库结构作为一个功能较完备Windows软件开发平台,Visual Basic专业版提供了对数据库应用强大支持。..., F3.Type = DB_INTEGER T1.Fields.Append F1 '向数据表中添加这些字段T1.Fields.Append F2。
  • 将该位置以及以后元素后推移一个位置,将读入的新数填入空出位置. 希尔排序 <1> 基本思想 希尔排序法是1959年由D.L.Shell提出来,又称减少增量排序。下是以八个元素排序示范例子.该例,开始...
  • 在数据表中操作数据:说明如何添加、修改和删除表中的数据。说明如何使用 DataTable 事件来检查对表中数据的更改。   创建和使用 DataView:描述如何创建 DataTable 中数据的动态视图,这些视图通常用于数据绑定...
  • 数据结构(C++)有关练习题

    热门讨论 2008-01-02 11:27:18
    d. 当输入一个商品,能显示该商品是否库存,如存在库存,则显示其名称和数量,否则显示“未找到”。 e. 如有可能,请建立一个存储商品名称和数量文本文件,并为二叉搜索树建立一个成员函数...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 767
精华内容 306
关键字:

在向数据表中输入新的数据时