func selectSort(_ arr: inout [Int]) { let count = arr.count var min = 0 for index in 0..<count-1 { min = index for j in index+1..<count { if arr[min] > arr[j] { min = j } } if min != index { arr.swapAt(index, min) } } } // test result var selectSortArr = [86, 37, 56, 29, 92, 73, 15, 63, 30, 8] selectSort(&selectSortArr) print(selectSortArr)
class Node { var value: Int var next: Node? init(value: Int, next: Node? = nil) { self.value = value self.next = next } } func createLinkList(length: Int) -> Node? { if length <= 0 { return nil } let head = Node.init(value: 0) var number = 1, p = head, q = head while number <= length { p = Node.init(value: number) q.next = p q = p number += 1 } return head } func printLinkList(head:Node?) { if head == nil { return } var p = head while p != nil { print("num = \(p!.value)") p = p?.next } } func reverseFuncLinkList(head:Node?) -> Node? { if head == nil { return head } var p = head var q: Node? while p != nil { let pNext = p?.next p?.next = q q = p p = pNext } return q }
// create link list var head = createLinkList(length: 5) printLinkList(head: head)
// reverse link list head = reverseFuncLinkList(head: head) printLinkList(head: head)
8、链表:删除链表中的重复元素,每个重复元素需要出现一次。
给定链表:1->2->2->3->4->5->5
输出结果应当为 1->2->3->4->5
请实现下面的deleteRepeatElements函数:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
func deleteRepeatElements(head:Node?) -> Node? { if head == nil { return head } var pNode = head while pNode != nil && pNode?.next != nil { if pNode?.value == pNode?.next?.value { let tempNode = pNode?.next pNode?.next = tempNode?.next } else { pNode = pNode?.next } } return head }