zoukankan      html  css  js  c++  java
  • 自然语言交流系统 phxnet团队 创新实训 个人博客 (一)

    项目涉及链表操作,遂整理:

    使用链表结构可以克服数组链表需要预先知道数据大小的缺点,链表结构可以充分利用计算机内存空间,实现灵活的内存动态管理。但是链表失去了数组随机读取的优点,同时链表由于增加了结点的指针域,空间开销比较大。链表最明显的好处就是,常规数组排列关联项目的方式可能不同于这些数据项目在记忆体磁盘上顺序,数据的存取往往要在不同的排列顺序中转换。链表允许插入和移除表上任意位置上的节点,但是不允许随机存取。链表有很多种不同的类型:单向链表双向链表以及循环链表。链表可以在多种编程语言中实现。像Lisp和Scheme这样的语言的内建数据类型中就包含了链表的存取和操作。程序语言或面向对象语言,如C,C++和Java依靠易变工具来生成链表。

    public static SortedList mergeList(SortedList list1, SortedList list2){
            SortedList list = new SortedList();
            Link link = new Link(0l),current1,current2,link2;
            current1 = list1.first;
            current2 = list2.first;
            link2 = link;
            while(current1 != null && current2 != null){
                if(current1.dData >= current2.dData){
                    link.next = current2;
                    current2 = current2.next;
                } else {
                    link.next = current1;
                    current1 = current1.next;
                }
                link = link.next;
            }
            list.first = link2;
            list.remove();
            return list;
        }

    package com.jim.test;

    //链表类
    class Link {
    Node head = null;
    Node point = null;
    Node newNode = null;
    public int count = 0;// 统计值

    // 插入
    public void addNode(int t) {
    newNode = new Node();
    if (head == null) {
    head = newNode;
    } else {
    point = head;
    while (point.next != null) {
    point = point.next;
    }
    point.next = newNode;
    }
    point = newNode;
    point.vlaue = t;
    point.next = null;
    count++;
    }

    // 返回值
    public int getValue(int i) {
    if (head == null || i < 0 || i > count)
    return -999999;
    int n;
    Node temp = null;
    point = head;
    for (n = 0; n <= i; n++) {
    temp = point;
    point = point.next;
    }
    return temp.vlaue;
    }

    }
    //节点类
    class Node {
    int vlaue;
    Node next;
    }

    public class Test {

    public static void main(String[] args) {
    //H1=(23,45,67,89,90,123,145)
    Link link1=new Link();
    link1.addNode(23);
    link1.addNode(45);
    link1.addNode(67);
    link1.addNode(89);
    link1.addNode(90);
    link1.addNode(123);
    link1.addNode(145);
    Link link2=new Link();
    //H2=(1,34,65,88,98,123,146,234,366)
    link2.addNode(1);
    link2.addNode(34);
    link2.addNode(65);
    link2.addNode(88);
    link2.addNode(98);
    link2.addNode(123);
    link2.addNode(146);
    link2.addNode(234);
    link2.addNode(366);
    //H3
    Link link3=new Link();
    int i=0,j=0;
    while(i<link1.count && j<link2.count){
    //依次扫描通过H1和H2的元素,比较当前的元素的值,将较小值的元素赋给H3
    while(link1.getValue(i)<=link2.getValue(j)){
    link3.addNode(link1.getValue(i));
    i++;
    }
    while(link1.getValue(i)>link2.getValue(j)){
    link3.addNode(link2.getValue(j));
    j++;
    }
    //链表H1已经遍历完成,将链表H2余下内容赋给链表H3
    if(i==link1.count-1){
    while(j<link2.count){
    link3.addNode(link2.getValue(j));
    j++;
    }
    }
    //链表H2已经遍历完成,将链表H1余下内容赋给链表H3
    if(j==link2.count-1){
    while(i<link1.count){
    link3.addNode(link1.getValue(i));
    i++;
    }
    }
    }
    //打印H3
    for(int k=0;k<link3.count;k++){
    System.out.print(link3.getValue(k)+", ");
    }
    }

    }

  • 相关阅读:
    蔚来NIO Pilot 全球首试 终于摘掉半成品帽子
    这个机械手可精准灵活地接住一颗掉落的棉花糖并使其“安然无恙”
    谷歌已经领先 那么苹果的人工智能战略又在哪里
    你见过机器船吗?MIT新版ROBOAT可以自动组装
    谷歌、亚马逊、苹果三大语音助手发展现状 谁被甩在身后了
    Python中的十大图像处理工具
    测试用例设计理论
    Flask+Mysql搭建网站之数据库问题
    Flask+Mysql搭建网站之网页设计
    Flask+Mysql搭建网站之安装Mysql
  • 原文地址:https://www.cnblogs.com/qiaoyanlin/p/6805345.html
Copyright © 2011-2022 走看看