• 【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:




  • 相关阅读:
    生活不仅有诗远方,还有身体和枸杞
    星空
    住进布达拉宫,我是雪域最大的王。流浪在拉萨街头,我是世间最美的情郎。
    安得与君相决绝,免教生死作相思
    黑马程序员-传智健康项目资料
    黑马程序员-传智健康项目(第十三章)
    黑马程序员-传智健康项目(第十二章)
    黑马程序员-传智健康项目(第十一章)
    黑马程序员-传智健康项目(第十章)
    黑马程序员-传智健康项目(第九章)
  • 原文地址:https://www.cnblogs.com/bhlsheji/p/5286135.html
Copyright © 2020-2023  润新知