package main /** * Project 3: programming in Go lang * Using Go Lang, write a program that: * - fills an array with random integers in the range 10 to 99. * - builds a Doubly LinkedList by inserting the integers in the array into the data structure. * - finds the length of a given LinkedList. * - finds the minimum value in a given LinkedList. * * author: Nicholas Adamou * date: 10/9/19 * Class: CSC-315 */ import ( "fmt" "math/rand" ) type Node struct { prev *Node value int next *Node } func insert(LinkedList *Node, value int) *Node { if LinkedList == nil { return LinkedList } for node := LinkedList; node != nil; node = node.next { if node.next == nil { if node.prev != nil { node.next = &Node{ node.prev, value, nil} } else { node.next = &Node{nil, value, nil} } return LinkedList } } return LinkedList } func findMinimum(LinkedList *Node) (minimum int) { for node := LinkedList; node != nil; node = node.next { if node.next != nil { if node.value < node.next.value { minimum = node.value } } } return } func length(LinkedList *Node) (count int) { for node := LinkedList; node != nil; node = node.next { count += 1 } return } func print(LinkedList *Node) { for node := LinkedList; node != nil; node = node.next { if node.next == nil { fmt.Printf(" %d", node.value) } else { fmt.Printf(" %d ->", node.value) } } fmt.Println() } func random(max int, min int) int { return rand.Int() % (max - min + 1) + min } func main() { const MIN = 10 const MAX = 99 const SIZE = 10 var LinkedList *Node = &Node{nil, random(MAX, MIN), nil} for i := 1; i < SIZE; i++ { insert(LinkedList, random(MAX, MIN)) } print(LinkedList) fmt.Printf("\nLength of LinkedList: %d\n", length(LinkedList)) fmt.Printf("Minimum value: %d\n", findMinimum(LinkedList)) }