Skip to content

Instantly share code, notes, and snippets.

@d11e9
Last active August 27, 2015 16:08
Show Gist options
  • Save d11e9/de130b34a372523c4c3f to your computer and use it in GitHub Desktop.
Save d11e9/de130b34a372523c4c3f to your computer and use it in GitHub Desktop.
contract owned {
address owner;
function owned() { owner = msg.sender; }
function transfer(address to) returns (bool success){
if (isOwner()) {
owner = to;
return true;
} else {
return false;
}
}
function isOwner () returns(bool) {
return msg.sender == owner;
}
function isOwner (address addr) returns(bool) {
return addr == owner;
}
modifier onlyowner { if (msg.sender == owner) _ }
}
contract mortal is owned {
function kill() onlyowner { suicide(owner); }
}
contract LinkedListAddressInt is owned, mortal {
struct Item {
address prev;
address next;
int value;
}
address public head;
address public tail;
uint public length;
mapping( address => Item) public items;
modifier exist (address id, bool flag) { if ((items[id].value != 0 ) == flag) _ }
function LinkedList(){
tail = address(0);
tail = address(0);
length = 0;
}
function add (address addr, int value) exist(addr, false) onlyowner {
address prev = head;
items[prev].next = addr;
items[addr] = Item( prev, address(0), value );
head = addr;
length++;
if (tail == address(0)) { tail = addr; }
}
function remove(address addr) exist(addr, true) onlyowner {
if (head == addr) {
head = items[addr].prev;
}
if (tail == addr) {
tail = items[addr].next;
}
if (items[addr].prev != address(0)) {
items[items[addr].prev].next = items[addr].next;
}
if (items[addr].next != address(0)) {
items[items[addr].next].prev = items[addr].prev;
}
length--;
delete items[addr];
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment