hgeometry-0.5.0.0: Geometric Algorithms, Data structures, and Data types.

Data.CircularList.Util

Synopsis

# Documentation

````>>> ````let ordList = C.fromList [5,6,10,20,30,1,2,3]
``````

insertOrd :: Ord a => a -> CList a -> CList a Source

Given a circular list, whose elements are in increasing order, insert the new element into the Circular list in its sorted order.

````>>> ````insertOrd 1 C.empty
```fromList [1]
`>>> ````insertOrd 1 \$ C.fromList [2]
```fromList [2,1]
`>>> ````insertOrd 2 \$ C.fromList [1,3]
```fromList [1,2,3]
`>>> ````insertOrd 31 ordList
```fromList [5,6,10,20,30,31,1,2,3]
`>>> ````insertOrd 1 ordList
```fromList [5,6,10,20,30,1,1,2,3]
`>>> ````insertOrd 4 ordList
```fromList [5,6,10,20,30,1,2,3,4]
`>>> ````insertOrd 11 ordList
```fromList [5,6,10,11,20,30,1,2,3]
```

insertOrdBy :: (a -> a -> Ordering) -> a -> CList a -> CList a Source

Insert an element into an increasingly ordered circular list, with specified compare operator.

insertOrdBy' :: (a -> a -> Ordering) -> a -> [a] -> [a] Source

List version of insertOrdBy; i.e. the list contains the elements in cirulcar order. Again produces a list that has the items in circular order.

splitIncr :: (a -> a -> Ordering) -> [a] -> ([a], [a]) Source

isShiftOf :: Eq a => CList a -> CList a -> Bool Source

Test if the circular list is a cyclic shift of the second list. Running time: O(n), where n is the size of the smallest list