zoukankan      html  css  js  c++  java
  • 【DataStructure】Some useful methods about linkedList(二)

    Method 1: Add one list into the other list.

    For example, if list1is {22, 33, 44, 55} and  list2 is {66, 77, 88, 99},then append(list1, list2)will change list1to {22, 33, 44, 55, 44, 66, 77, 88, 99}.

    static void append(Node list1, Node list2) {
    		if (list1 == null) {
    			throw new IllegalArgumentException();
    		}
    		while (list1.next != null) {
    			list1 = list1.next;
    		}
    		list1.next = list2;
    	}

    The output is as follows:



    Method2: Gets a new list combined by two list

    For example, if list1 is {22, 33, 44, 55} and  list2 is {66, 77, 88, 99}, then concat(list1, list2)will return the new list {22, 33, 44, 55, 44, 55, 66, 77, 88}. 

    Note that the three lists should be completely independent of each other. Changing one list should have no effect upon the others.

    static Node concat(Node list1, Node list2) {
    		Node list3 = new Node(0);
    		Node p = list1;
    		Node q = list3;
    		while(p != null)
    		{
    			q.next = new Node(p.data);
    			p = p.next;
    			q = q.next;
    		}
    	    p = list2;
    	    while(p != null)
    	    {
    	    	q.next = new Node(p.data);
    	    	q = q.next;
    	    	p = p.next;
    	    }
    		return list3.next;
    	}

    The output is as follows:


    Method 3 : Replace the value of element number i with x

    void set(Node list, int i, int x)

    For example, if list is {22, 33, 44, 55, 66, 77, 88, 99}, then set(list, 2, 50) will change List to {22, 33, 50, 55, 66, 44, 88, 99}

    Solution 1:
    	static void set(Node list, int i, int x) {
    		Node p = list;
    		int count = 0;
    		while (p != null) {
    			if (count == i) {
    				p.data = x;
    				break;
    			}
    			p = p.next;
    			count++;
    		}
    	}
    Solution2:
    	static void set(Node list, int i, int x) {
    		if (i < 0) {
    			throw new IllegalArgumentException();
    		}
    		for (int j = 0; j < i; j++) {
    			if (list == null) {
    				throw new IllegalStateException();
    			}
    			list = list.next;
    		}
    		list.data = x;
    	}

    The output is as follows:




  • 相关阅读:
    收藏文章
    Python __func__
    Python 可变对象 & 不可变对象
    Kafka SASL ACL配置踩坑总结
    C++ 传递动态内存
    负数取反,单目运算“-”的运算
    C++重载运算符的理解
    c++ 随机函数用法
    static变量
    路由汇聚及其相关计算
  • 原文地址:https://www.cnblogs.com/bhlsheji/p/5286135.html
Copyright © 2011-2022 走看看