Skip to content

Commit 4261ea9

Browse files
authored
Merge pull request #2 from fwouts/master
Add TypeScript definitions
2 parents 93177d9 + 6657e1d commit 4261ea9

File tree

2 files changed

+253
-0
lines changed

2 files changed

+253
-0
lines changed

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
],
99
"license": "MIT",
1010
"main": "index.js",
11+
"typings": "src/jsgraphs.d.ts",
1112
"directories": {
1213
"test": "test"
1314
},

src/jsgraphs.d.ts

Lines changed: 252 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,252 @@
1+
declare namespace JsGraphs {
2+
interface Node {
3+
label?: string;
4+
}
5+
class StackNode<T> {
6+
value: T;
7+
next: StackNode<T> | null;
8+
constructor(value: T);
9+
}
10+
class Stack<T> {
11+
private N;
12+
private first;
13+
constructor();
14+
push(a: T): void;
15+
_push(x: StackNode<T> | null, a: T): StackNode<T>;
16+
pop(): T | undefined;
17+
size(): number;
18+
isEmpty(): boolean;
19+
peep(): T | undefined;
20+
toArray(): T[];
21+
}
22+
class QueueNode<T> {
23+
value: T;
24+
next: QueueNode<T> | null;
25+
constructor(a: T);
26+
}
27+
class Queue<T> {
28+
private first;
29+
private last;
30+
private N;
31+
constructor();
32+
enqueue(item: T): void;
33+
dequeue(): T | undefined;
34+
size(): number;
35+
isEmpty(): boolean;
36+
toArray(): T[];
37+
}
38+
class MinPQ<T> {
39+
private s;
40+
private N;
41+
private compare;
42+
constructor(compare?: (a1: any, a2: any) => number);
43+
enqueue(item: T): void;
44+
swim(k: number): void;
45+
delMin(): T | undefined;
46+
sink(k: number): void;
47+
size(): number;
48+
isEmpty(): boolean;
49+
}
50+
class QuickUnion {
51+
private id;
52+
constructor(V: number);
53+
union(v: number, w: number): void;
54+
root(q: number): number;
55+
connected(v: number, w: number): boolean;
56+
}
57+
class IndexMinPQ<T> {
58+
private keys;
59+
private pq;
60+
private qp;
61+
private N;
62+
private compare;
63+
constructor(N: number, compare?: (a1: any, a2: any) => number);
64+
insert(index: number, key: T): void;
65+
decreaseKey(index: number, key: T): void;
66+
minKey(): T | null;
67+
min(): number;
68+
delMin(): number;
69+
swim(k: number): void;
70+
sink(k: number): void;
71+
containsIndex(index: number): boolean;
72+
isEmpty(): boolean;
73+
size(): number;
74+
}
75+
class Graph {
76+
V: number;
77+
private adjList;
78+
private nodeInfo;
79+
private edges;
80+
constructor(V: number);
81+
addEdge(v: number, w: number): void;
82+
adj(v: number): number[];
83+
node(v: number): Node;
84+
edge(v: number, w: number): Edge | null;
85+
}
86+
class DiGraph {
87+
V: number;
88+
private adjList;
89+
private nodeInfo;
90+
private edges;
91+
constructor(V: number);
92+
addEdge(v: number, w: number): void;
93+
edge(v: number, w: number): Edge | null;
94+
adj(v: number): number[];
95+
node(v: number): Node;
96+
reverse(): DiGraph;
97+
}
98+
class Edge {
99+
private v;
100+
private w;
101+
weight: number;
102+
label?: string;
103+
constructor(v: number, w: number, weight: number);
104+
either(): number;
105+
other(x: number): number;
106+
from(): number;
107+
to(): number;
108+
}
109+
class WeightedGraph {
110+
V: number;
111+
protected adjList: Edge[][];
112+
private nodeInfo;
113+
constructor(V: number);
114+
adj(v: number): Edge[];
115+
edge(v: number, w: number): Edge | null;
116+
node(v: number): Node;
117+
addEdge(e: Edge): void;
118+
}
119+
class WeightedDiGraph extends WeightedGraph {
120+
addEdge(e: Edge): void;
121+
edge(v: number, w: number): Edge | null;
122+
toDiGraph(): DiGraph;
123+
}
124+
class FlowEdge {
125+
private v;
126+
private w;
127+
private capacity;
128+
private flow;
129+
label?: string;
130+
constructor(v: number, w: number, capacity: number);
131+
residualCapacityTo(x: number): number;
132+
addResidualFlowTo(x: number, deltaFlow: number): void;
133+
from(): number;
134+
to(): number;
135+
other(x: number): number;
136+
}
137+
class FlowNetwork {
138+
V: number;
139+
private adjList;
140+
private nodeInfo;
141+
constructor(V: number);
142+
node(v: number): Node;
143+
edge(v: number, w: number): FlowEdge | null;
144+
addEdge(e: FlowEdge): void;
145+
adj(v: number): FlowEdge[];
146+
}
147+
class DepthFirstSearch<T> {
148+
private s;
149+
private marked;
150+
private edgeTo;
151+
constructor(G: Graph, s: number);
152+
dfs(G: Graph, v: number): void;
153+
hasPathTo(v: number): boolean;
154+
pathTo(v: number): number[];
155+
}
156+
class BreadthFirstSearch {
157+
private V;
158+
private s;
159+
private marked;
160+
private edgeTo;
161+
constructor(G: Graph, s: number);
162+
hasPathTo(v: number): boolean;
163+
pathTo(v: number): number[];
164+
}
165+
class ConnectedComponents {
166+
private count;
167+
private marked;
168+
private id;
169+
constructor(G: Graph);
170+
dfs(G: Graph, v: number): void;
171+
componentId(v: number): number;
172+
componentCount(): number;
173+
}
174+
class TopologicalSort {
175+
private postOrder;
176+
private marked;
177+
constructor(G: DiGraph);
178+
dfs(G: DiGraph, v: number): void;
179+
order(): number[];
180+
}
181+
class StronglyConnectedComponents {
182+
private count;
183+
private marked;
184+
private id;
185+
constructor(G: DiGraph);
186+
dfs(G: DiGraph, v: number): void;
187+
componentId(v: number): number;
188+
componentCount(): number;
189+
}
190+
class KruskalMST {
191+
mst: Edge[];
192+
constructor(G: WeightedGraph);
193+
}
194+
class LazyPrimMST {
195+
mst: Edge[];
196+
private marked;
197+
private pq;
198+
constructor(G: WeightedGraph);
199+
visit(G: WeightedGraph, v: number): void;
200+
}
201+
class EagerPrimMST {
202+
mst: Edge[];
203+
private pq;
204+
private marked;
205+
constructor(G: WeightedGraph);
206+
visit(G: WeightedGraph, v: number): void;
207+
}
208+
class Dijkstra {
209+
private s;
210+
private marked;
211+
private edgeTo;
212+
private cost;
213+
private pq;
214+
constructor(G: WeightedGraph, s: number);
215+
relax(e: Edge): void;
216+
hasPathTo(v: number): boolean;
217+
pathTo(v: number): Edge[];
218+
distanceTo(v: number): number;
219+
}
220+
class BellmanFord {
221+
private s;
222+
private marked;
223+
private edgeTo;
224+
private cost;
225+
constructor(G: WeightedGraph, s: number);
226+
relax(e: Edge): void;
227+
hasPathTo(v: number): boolean;
228+
pathTo(v: number): Edge[];
229+
distanceTo(v: number): number;
230+
}
231+
class TopologicalSortShortestPaths {
232+
private s;
233+
private marked;
234+
private edgeTo;
235+
private cost;
236+
constructor(G: WeightedDiGraph, s: number);
237+
relax(e: Edge): void;
238+
hasPathTo(v: number): boolean;
239+
pathTo(v: number): Edge[];
240+
distanceTo(v: number): number;
241+
}
242+
class FordFulkerson {
243+
value: number;
244+
private marked;
245+
private edgeTo;
246+
private s;
247+
private t;
248+
constructor(G: FlowNetwork, s: number, t: number);
249+
hasAugmentedPath(G: FlowNetwork): boolean;
250+
minCut(G: FlowNetwork): FlowEdge[];
251+
}
252+
}

0 commit comments

Comments
 (0)