• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >编程问答 > 关于链表的一道题,求大神教教!!

关于链表的一道题,求大神教教!!

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-07

佚名通过本文主要向大家介绍了求大神ps的后果全集,求大神p图,求大神给个看片网站,求大神这是什么歌,乱求大神等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题:关于链表的一道题,求大神教教!!
描述:

给你一个链表L和一个链表P,它们包含已升序排列的整数。操作printLots(L,P)将打印L中那些由P所指定的位置的元素。例如P = 1,3,4,6.那么L中的第1个,第三个,第四个,第六个将会被打印出来。

从《数据结构与算法分析》中看到的。下面是我的代码,顺便请各位大大批评纠正。。我要疯了。

    public void printLot(ListNode a,ListNode b)
    {
        int count = 0;
        int index = 0;
        m = new ListNode(0);
        while(a.next != null)
        {
            if(count == index)
            {
                m = m.next;
                m.element = a.element;
                b = b.next;
                index = b.element;
            }
            a = a.next;
            count++;
        }
    }

解决方案1:

struct Node{
    Node* next;
    int data;
};

void print(Node* a,Node* b){
    if(a==NULL||b==NULL) return;
    int before=1;
    while(b!=NULL){
        int data=b->data;
        //需要移动的步数
        int step=data-before;
        while(step--){
            a=a->next;
            //data大于a的表长度
            if(a==NULL)
                break;
        }
        if(a!=NULL){
            printf("%d\n",a->data);
            before=data;
        }else
            break;
         b=b->next;
    }
}

解决方案2:

public static void printLot1(LinkList a, LinkList b) {
    Link tempB = b.getFirst();
    while (tempB != null) {
        int count = tempB.dData;// b中元素,对应a中的下标
        Link tempA = a.getFirst();
        int index = 0;//扫描到a的第几个元素
        while (tempA != null) {
            if (count == index) {
                System.out.println(tempA.dData + " ");
                break;
            }
            index++;
            tempA = tempA.next;
        }

        tempB = tempB.next;
    }
}

O(n^2)

解决方案3:

伪代码:


// Get K-th element of List 
NodeType getKElement(List L , int k )
{
    ...
}

// Main 
int main(){
Node* p = P ; 
while ( p != NULL ){
  print getKElement(L , p->value) ; 
  p = p->next ; 
}
}

上面的最好理解了

因为P是已经排好序的 , 所以你也可以每次从上次的地方向下找 , 复杂度从 $ O(n^2) $ 变为 $ O(n)$ 。


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 求大神指点用python基于flask写的一个web服务报10054错误
  • 求一个正则大神来救我
  • 关于链表的一道题,求大神教教!!

相关文章

  • 2017-06-07 七牛jssdk上传图片FilesAdded函数中定义的参数在FileUploaded函数中怎么取到
  • 2017-06-07 (redis)关于给用户发送邮件的一些问题
  • 2017-06-07 (flask)关于WTForms进行表单验证的一个问题
  • 2017-06-07 窗口继承后,窗体上的控件消失
  • 2017-06-07 镜像存储总是出现错误
  • 2017-06-07 loadrunner,选择socket协议录制,生成脚本乱码,如何解决?
  • 2017-06-07 七牛上传图片调用doUpload方法,出现回调onFailure的原因是什么
  • 2017-06-07 socket断开连接后客户端重新连接服务端这样是否可以?
  • 2017-06-07 不会算法和数据结构,永远感觉低人一等
  • 2017-06-07 异步处理结果持久化{"error":"badtoken"}

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • Date类型出错?
    • python的多维序列怎么做翻转操作?
    • 云端到本地的快速差异同步有没有甚麽好思路?
    • laravellaravel怎么使用artisan命令?
    • python爬虫(python)DjangoPOST表单错误?
    • 又是curl模拟登录的问题
    • 镜像存储在回源时不会带Query参数吗?
    • (python)Node如何以最简短的代码跑满CPU
    • 求教一个小python程序
    • (python)多层嵌套的if判断需要优化么?对性能影响大么?

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有