[Datastructure] Some useful methods about into list (3)

Source: Internet
Author: User

Method 4: gets the value of element number I

For example, if list is {22, 33, 44, 55, 66, 77, 88, 99}, then get (list, 2) will return 44.

Solution 1:static int get(Node list, int i) {if (i < 0) {throw new IllegalArgumentException();}for (int j = 0; j < i; j++) {if (list == null) {throw new IllegalStateException();}list = list.next;}return list.data;}Solution 2:static int get(Node list, int i){Node p = list;int j = 0;while (j < i && p != null) {++j;p = p.next;}if(p == null){throw new java.util.NoSuchElementException();}return p.data;}

The output is as follows:


Method 5: inserts X as element number I;

For example, if list is {22, 33, 44, 55, 66, 77, 88, 99}, then put (list, 3, 50) will change list to {22, 33, 44, 50, 55, 66, 44, 88, 99 }.

Hint:If I = 0, replace the value of the first node with X, and insert a new node immediately after it that contains the previous fist value.

Solution 1:static void put(Node list, int i, int x) {if (list == null) {throw new java.util.NoSuchElementException("List is Empty");} else if (i ==0) {list.next = new Node(list.data,list);list.data = x;} else {Node p = list;int j = 1;while (j < i && p != null) {++j;p = p.next;}if (p == null){String error = String.format("the list has only %d elements", j-1);;throw new java.util.NoSuchElementException(error);}p.next = new Node(x, p.next);}}

The output is as follows:


Method 6: swap the I element with the J Element

For example, if list is {22, 33, 44, 55, 66, 77, 88, 99}, then swap (list, 2, 5) will change list to {22, 33, 77, 55, 66, 44, 88, 99 }.

static void swap(Node list, int i, int j) {if (i < 0 || j < 0) {throw new IllegalArgumentException();} else if (i == j) {return;}Node p = list, q = list;for (int ii = 0; ii < i; ii++) {if (p == null) {throw new IllegalStateException();}p = p.next;}for (int jj = 0; jj < j; jj++) {if (q == null) {throw new IllegalStateException();}q = q.next;}int pdata = p.data, qdata = q.data;p.data = qdata;q.data = pdata;return;}

The output is as follows:



Method 7: gets a new list that contains all the elements of list1 and list2 in ascending order. list1 and list2 are both in ascending order.

For example, if list1is {22, 33, 55, 88} And list2is {44, 66, 77, 99}, then merged (list1, list2) will return the new list {22, 33, 44, 55, 66, 77, 88, 99 }.

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

static Node merged(Node list1, Node list2) {Node list = new Node(0);Node p = list, p1 = list1, p2 = list2;while (p1 != null && p2 != null) {if (p1.data < p2.data) {p = p.next = new Node(p1.data);p1 = p1.next;} else {p = p.next = new Node(p2.data);p2 = p2.next;}}while (p1 != null) {p = p.next = new Node(p1.data);p1 = p1.next;}while (p2 != null) {p = p.next = new Node(p2.data);p2 = p2.next;}return list.next;}
The output is as follows:


Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.