一道关于 链表的 面试题 不会~有人能帮个忙吗解答下吗谢谢

问题描述

3.请给出一个单链表结构的定义,每个节点用来储存一个整型数,并且给出一段代码来合并两个已经按照该整数从小到大排好序的链表,使得合并后的链表也是同样排好序的。

解决方案

链表好久不用了,到现在只用数组和哈希表。
解决方案二:
package pkg;public class Node implements Comparable {private Integer value;private Node next;public Node(){}public Node(Integer value, Node next) {this.value = value;this.next = next;}public Node getNext() {return next;}public void setNext(Node next) {this.next = next;}public Integer getValue() {return value;}public void setValue(Integer value) {this.value = value;}public int compareTo(Object o) {Node another = (Node) o;return value.compareTo(another.getValue());}}package pkg;public class IntegerList {public IntegerList() {first = null;size = 0;}public void add(Node node) {if(isEmpty()) {first = node;size = 1;} else {privateAddNode(node);size++;}}public boolean isEmpty() {return first == null;}public Node getFirst() {return first;}public int size() {return size;}private void privateAddNode(Node node) {Node currentNode = null, priorNode = null;if(first.compareTo(node) >= 0) {node.setNext(first);first = node;return;}priorNode = first;currentNode = first.getNext();while(currentNode != null) {if(currentNode.compareTo(node) >= 0) {priorNode.setNext(node);node.setNext(currentNode);return;}priorNode = currentNode;currentNode = currentNode.getNext();}priorNode.setNext(node);node.setNext(null);}private Node first;private int size;}package pkg;public class Test {/** * @param args */public static void main(String[] args) {IntegerList list1 = new IntegerList();list1.add(new Node(Integer.valueOf(4), null));list1.add(new Node(Integer.valueOf(5), null));list1.add(new Node(Integer.valueOf(1), null));list1.add(new Node(Integer.valueOf(3), null));IntegerList list2 = new IntegerList();list2.add(new Node(Integer.valueOf(-3), null));list2.add(new Node(Integer.valueOf(5), null));list2.add(new Node(Integer.valueOf(100), null));list2.add(new Node(Integer.valueOf(100), null));list2.add(new Node(Integer.valueOf(-3), null));Node node = list2.getFirst();while(node != null) {int value = node.getValue().intValue();list1.add( new Node(Integer.valueOf(value), null) );node = node.getNext();}node = list1.getFirst();while(node != null) {System.out.println(node.getValue());node = node.getNext();}}}控制台打印:-3-313455100100

时间: 2024-10-21 17:13:25

一道关于 链表的 面试题 不会~有人能帮个忙吗解答下吗谢谢的相关文章

经典算法(11) 一道有趣的GOOGLE面试题 --【解法2】

上一篇<白话经典算法系列之十一道有趣的GOOGLE面试题>中对一道有趣的GOOGLE面试题进行了详细的讲 解,使用了类似于基数排序的做法在O(N)的时间复杂度和O(1)的空间复杂度完成了题目的要求,文章发表后 ,网友fengchaokobe在评论中给出了另一种解法,见下图. 文字版: int Repeat(int *a, int n) { for(int i = 0; i < n; i++) { if(a[i] > 0) //判断条件 { if(a[ a[i] ] < 0)

经典算法(10) 一道有趣的GOOGLE面试题

最近在微博上看到一道有趣的GOOGLE面试题,见下图: 文字版: 一个 大小为n的数组,里面的数都属于范围[0, n-1],有不确定的重复元素,找到至少一个重复元素,要求O(1)空 间和O(n)时间. 这个题目要求用O(n)的时间复杂度,这意味着只能遍历数组一次.同时还要寻找重复 元素,很容易想到建立哈希表来完成,遍历数组时将每个元素映射到哈希表中,如果哈希表中已经存在这个 元素则说明这就是个重复元素.因此直接使用C++ STL中的hash_set(参见<STL系列之六 set与hash_set

语言 面试题-一道面试题,不是很清楚这个例子怎么解答,求大神帮助.

问题描述 一道面试题,不是很清楚这个例子怎么解答,求大神帮助. 提问是 这段代码有什么问题, 有什么解决思路.(我其实连问题都没看出来,代码可以编译) // Memory-mapped peripheral#define STATUS_REG_ADDR 0x12345678 // 32-bit status register#define DATA_REG_ADDR 0x1234567C // 32-bit data register // Status register bits#define

逻辑题-一道算法或者逻辑面试题,求思路

问题描述 一道算法或者逻辑面试题,求思路 100个面值是1-50随机分布的硬币排成一列,你和另一个人一人一个的取,只能从队列头部和尾部取.如何保证最后你取的硬币面值和比你对手多? 解决方案 保证你取倒数第二张? 还是和最大? 1-50 面值按照谁家的硬币? 美元? 美元面值: 现流通硬币有1 分.5 分.10分.1/4 元.1/2 元.1 元六种面值. 正面与背面所铸图案如下: 1 分 - 正面: Lincoln 林肯 ,背面:林肯纪念堂 5 分 - 正面:Jefferson 杰佛逊 ,背面:杰

cte结合partition - 一道复杂的sql面试题

今天别人问了我一道复杂的sql面试题, 题目是这样的:   --code     价格                  时间'0010'     100      '2012-08-01 00:00:00.000''0010'     100      '2012-08-02 00:00:00.000''0010'     100      '2012-08-03 00:00:00.000''0010'     100      '2012-08-05 00:00:00.000''0012' 

一道java题目,请大虾们帮帮忙,我是个新手,谢谢

问题描述 一道java题目,请大虾们帮帮忙,我是个新手,谢谢 编写一个程序,对于输入的一段程序,可以获取该程序的单词符号.单词符号的类别有基本字.标识符.常数.算符和界符.关键字为基本字,由字母组成,如int.for和while:变量名和函数名为标识符,由字母和数字构成,如fun1和age:固定不变的数值为常数,如12.13.86和25e8(科学计数法):算符如+.-.*./ .%.&&:界符如 {.[.(. :和:等. 如, public?static?void?main (String

c语言 链表 加法-多项式加法,不知道哪里有问题,找了很久没找出来,能不帮个忙看下

问题描述 多项式加法,不知道哪里有问题,找了很久没找出来,能不帮个忙看下 #include #include typedef int ElemType; typedef struct node{ ElemType exp; ElemType coef; struct node next; }linklist; //创建空链表,再主函数里输入数值, void creat(linklist *s) { s=(linklist)malloc(sizeof(linklist)); s->next=NUL

一道acm动态题目,谁帮忙看下。谢谢了

问题描述 一道acm动态题目,谁帮忙看下.谢谢了 排列 查看 提交 统计 提问 总时间限制: 5000ms 内存限制: 65536kB 描述 题目描述: 大家知道,给出正整数n,则1到n这n个数可以构成n!种排列,把这些排列按照从小到大的顺序(字典顺序)列出,如n=3时,列出1 2 3,1 3 2,2 1 3,2 3 1,3 1 2,3 2 1六个排列. 任务描述: 给出某个排列,求出这个排列的下k个排列,如果遇到最后一个排列,则下1排列为第1个排列,即排列1 2 3-n. 比如:n = 3,k

链表-C语言关于学生管理系统的题,麻烦帮我看看哪里出错了,谢谢!

问题描述 C语言关于学生管理系统的题,麻烦帮我看看哪里出错了,谢谢! 代码如下: #include<stdio.h> #include<stdlib.h> #include<string.h> #define OK 1 #define ERROR 0 struct Score { int score; }s[3];//课程及对应成绩 typedef struct LNode { char name[3]; struct Score s[3]; struct LNode