Return Styles: Pseud0ch, Terminal, Valhalla, NES, Geocities, Blue Moon. Entire thread

Pointers in other languages

Name: Anonymous 2011-08-18 8:49

So I've been using C for almost a year now but decided to give Python a chance. Python and many high level languages don't have pointers like C. Without pointers how do you implement dynamic data structures like lists and trees? (I know that Python has these built in but what if I want to use a more specific structure not built in)

Name: Anonymous 2011-08-19 9:13

class LinkedList:
    class Node:
        def __init__(self, elem):
            self.elem = elem
            self.next = None

    class Iterator:
        def __init__(self, node):
            self.current = node

        def next(self):
            if self.current.next == None:
                raise StopIteration

            self.current = self.current.next

            return self.current.elem

    def __init__(self):
        self.dummy = LinkedList.Node(None)
        self.size  = 0

    def add(self, e):
        node = self.dummy

        while node.next != None:
            node = node.next

            if node.elem == e:
                return False

        node.next  = LinkedList.Node(e)
        self.size += 1

        return True

    def addAll(self, c):
        changed = False

        for e in c:
            if self.add(e):
                changed = True

        return changed

    def clear(self):
        self.dummy.next = None

    def __contains__(self, o):
        for e in self:
            if (o == e):
                return True

        return False

    def containsAll(self, c):
        for o in c:
            if not o in self:
                return False

        return True

    def __len__(self):
        return self.size

    def __iter__(self):
        return LinkedList.Iterator(self.dummy)

    def isEmpty(self):
        return self.dummy.next == None

    def remove(self, o):
        node = self.dummy

        while node.next != None:
            if node.next.elem == o:
                node.next  = node.next.next
                self.size -= 1
                return True

            node = node.next

        return False

    def removeAll(self, c):
        changed = False

        for o in c:
            if self.remove(o):
                changed = True

        return changed

Newer Posts
Don't change these.
Name: Email:
Entire Thread Thread List