September 2017 Update
This commit is contained in:
parent
bba7bfd280
commit
ba8067c3b7
14570 changed files with 153136 additions and 63871 deletions
|
|
@ -0,0 +1,30 @@
|
|||
// version 1.1.2
|
||||
|
||||
class Node<T: Number>(var data: T, var prev: Node<T>? = null, var next: Node<T>? = null) {
|
||||
override fun toString(): String {
|
||||
val sb = StringBuilder(this.data.toString())
|
||||
var node = this.next
|
||||
while (node != null) {
|
||||
sb.append(" -> ", node.data.toString())
|
||||
node = node.next
|
||||
}
|
||||
return sb.toString()
|
||||
}
|
||||
}
|
||||
|
||||
fun <T: Number> insert(after: Node<T>, new: Node<T>) {
|
||||
new.next = after.next
|
||||
if (after.next != null) after.next!!.prev = new
|
||||
new.prev = after
|
||||
after.next = new
|
||||
}
|
||||
|
||||
fun main(args: Array<String>) {
|
||||
val a = Node(1)
|
||||
val b = Node(3, a)
|
||||
a.next = b
|
||||
println("Before insertion : $a")
|
||||
val c = Node(2)
|
||||
insert(after = a, new = c)
|
||||
println("After insertion : $a")
|
||||
}
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
PROCEDURE (dll: DLList) InsertAfter*(p: Node; o: Box.Object);
|
||||
VAR
|
||||
n: Node;
|
||||
BEGIN
|
||||
n := NewNode(o);
|
||||
n.prev := p;
|
||||
n.next := p.next;
|
||||
IF p.next # NIL THEN p.next.prev := n END;
|
||||
p.next := n;
|
||||
IF p = dll.last THEN dll.last := n END;
|
||||
INC(dll.size)
|
||||
END InsertAfter;
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
enum NEXT,PREV,DATA
|
||||
constant empty_dll = {{1,1}}
|
||||
sequence dll = empty_dll
|
||||
|
||||
procedure insert_after(object data, integer pos=1)
|
||||
integer prv = dll[pos][PREV]
|
||||
dll = append(dll,{pos,prv,data})
|
||||
if prv!=0 then
|
||||
dll[prv][NEXT] = length(dll)
|
||||
end if
|
||||
dll[pos][PREV] = length(dll)
|
||||
end procedure
|
||||
|
||||
insert_after("ONE")
|
||||
insert_after("TWO")
|
||||
insert_after("THREE")
|
||||
|
||||
?dll
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
class Node{
|
||||
fcn init(_value,_prev=Void,_next=Void)
|
||||
{ var value=_value, prev=_prev, next=_next; }
|
||||
fcn toString{ value.toString() }
|
||||
fcn append(value){
|
||||
b,c := Node(value,self,next),next;
|
||||
next=b;
|
||||
if(c) c.prev=b;
|
||||
b
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
a:=Node("a");
|
||||
a.append("b").append("c");
|
||||
println(a," ",a.next," ",a.next.next);
|
||||
Loading…
Add table
Add a link
Reference in a new issue