Skip to content

Li-Bot/DSKit

Repository files navigation

Carthage compatible Pods compatible SPM compatible Swift Version Platform PRs Welcome

DSKit

DSKit is a Framework of Data Structures written in Swift.

Contents

Features

  • Linked List
  • Queue
  • QuadTree

Requirements

  • iOS 8+ / macOS 10.10+
  • Xcode 10+
  • Swift 5+

Installation

Carthage

github "Li-Bot/DSKit.git" ~> 0.1.0

Swift Package Manager

dependencies: [
    .package(url: "https://github.com/Li-Bot/DSKit.git", .upToNextMajor(from: "1.0.0"))
]

Cocoapods

pod 'DSKitc', '~> 0.1.0'

Usage

Let's look at how simple it is!

Linked List

A simple linked list.

// Create
let list = DSLinkedList<DSLinkedListNode<Int>>()
// Append
list.append(data: 1)
list.append(node: DSLinkedListNode(data: 2))
// Get
let firstNumber = list[0]
// Remove
list.remove(at: 1)

Queue

A simple queue.

// Create
let queue = DSQueue<Int>()
// Enqueue
queue.enqueue(1)
// Dequeue
let firstNumber = queue.dequeue()

QuadTree

QuadTree is a special tree data structure. QuadTree is used for spatial decomposition of 2D space. Each node has four subnodes that represent - top left, top right, bottom right and bottom left.

// Create
let treeRootRect = DSQuadRect(origin: .zero, end: CGPoint(x: 100.0, y: 100.0))
let quadTree = DSQuadTree<DSQuadTreeNode<Int>>(rect: treeRootRect)
// Insert
var result = quadTree.insert(node: DSQuadTreeNode(position: CGPoint(x: 10.0, y: 10.0), data: 1))
result = quadTree.insert(node: DSQuadTreeNode(position: CGPoint(x: 12.0, y: 12.0), data: 1))
result = quadTree.insert(node: DSQuadTreeNode(position: CGPoint(x: 70.0, y: 90.0), data: 1))
// Search
let foundNode = quadTree.search(at: CGPoint(x: 10.0, y: 10.0))
let circle = DSCircle(center: CGPoint(x: 50.0, y: 50.0), radius: 25.0)
let foundNodes = quadTree.search(at: circle)

QaudTree Image Renderer

Render QuadTree into an image.

let renderer = DSQuadTreeRenderer()
let image = renderer.draw(tree: quadTree, highlight: circle)

Future

  • More data structures. I am only in the beginning.

License

DSKit is released under the GNU GPLv3 license. See the LICENSE here.

About

Data Structures written in Swift

Resources

License

Stars

Watchers

Forks

Packages

No packages published