Compare commits
5
Commits
ca9480847c
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
399784d458 | ||
|
|
bbcb0c66d7 | ||
|
|
4a5c0c03fd | ||
|
|
e6c8526691 | ||
|
|
e9b4f85b19 |
@@ -1 +1,3 @@
|
|||||||
# orientada-a-objectos
|
# orientada-a-objectos
|
||||||
|
|
||||||
|
-- Objektorientierte Programmierung mit Python --
|
||||||
|
|||||||
@@ -1,18 +0,0 @@
|
|||||||
```mermaid
|
|
||||||
classDiagram
|
|
||||||
Item
|
|
||||||
Item : count: int
|
|
||||||
Item : type: int
|
|
||||||
Item : inc(self, amount)
|
|
||||||
|
|
||||||
Kart
|
|
||||||
Kart : int speed_max
|
|
||||||
Kart : Vector2 vel
|
|
||||||
Kart : Vector2 pos
|
|
||||||
Kart : string color
|
|
||||||
Kart : ram(self, Kart other)
|
|
||||||
Kart : consume_item(self, Item item)
|
|
||||||
```
|
|
||||||
|
|
||||||
Die Methode `inc(amount)` in `Item` ändert `.count` um `amount`.
|
|
||||||
Die Methode `ram(other)` in `Kart` tauscht die beiden Geschwindigkeiten.
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
classDiagram
|
|
||||||
Item
|
|
||||||
Item : int count
|
|
||||||
Item : int type
|
|
||||||
Item : inc(self, amount)
|
|
||||||
|
|
||||||
Kart
|
|
||||||
Kart : int speed_max
|
|
||||||
Kart : string color
|
|
||||||
Kart : ram(self, Kart other)
|
|
||||||
Kart : consume_item(self, Item item)
|
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
# Verkettete Liste -- Linked Lists
|
||||||
|
|
||||||
|
Aufgabe von itslearning:
|
||||||
|
|
||||||
|
## Aufgabe 1
|
||||||
|
|
||||||
|
> Beschreiben Sie den Auszug aus liste.py zeilenweise, schriftlich
|
||||||
|
|
||||||
|
1. importiere die Knoten Klasse aus der datei knoten.py
|
||||||
|
2. start von Difinition der Klasse Liste
|
||||||
|
3. Definition des Konstruktors
|
||||||
|
4. Konstruktor-Body: ein neues Objekt wird kreiert, mit dem Attribut head gleich None
|
||||||
|
5. (leer)
|
||||||
|
6. Definition einer Methode zum Ausgeben der Liste in die Konsole
|
||||||
|
7. (leer)
|
||||||
|
8. Attribut head wird in aktueller_knoten zwischengespeichert
|
||||||
|
9. (leer)
|
||||||
|
10. Schleife, die alle Knoten der Liste durchläuft
|
||||||
|
11. (leer)
|
||||||
|
12. Daten des aktuellen Knoten werden in der Konsole ausgegeben
|
||||||
|
13. (leer)
|
||||||
|
14. aktueller_knoten wird auf den ihm folgenden Knoten gesetzt
|
||||||
@@ -0,0 +1,94 @@
|
|||||||
|
from typing import Self
|
||||||
|
|
||||||
|
|
||||||
|
class Node:
|
||||||
|
def __init__(self, data: int):
|
||||||
|
self.data: int = data
|
||||||
|
self.next: Self | None = None
|
||||||
|
|
||||||
|
|
||||||
|
class LinkedList:
|
||||||
|
def __init__(self):
|
||||||
|
self.head: Node | None = None
|
||||||
|
|
||||||
|
def insert(self, data: int, insert_index: int):
|
||||||
|
if self.head is None:
|
||||||
|
self.head = Node(data)
|
||||||
|
return
|
||||||
|
|
||||||
|
node = self.head
|
||||||
|
assert node is not None
|
||||||
|
|
||||||
|
i = 1
|
||||||
|
while True:
|
||||||
|
ben = Node(37)
|
||||||
|
|
||||||
|
if node.next is None:
|
||||||
|
node.next = Node(data)
|
||||||
|
return
|
||||||
|
if i == insert_index or node.next == ben:
|
||||||
|
new_node = Node(data)
|
||||||
|
new_node.next = node.next
|
||||||
|
node.next = new_node
|
||||||
|
return
|
||||||
|
|
||||||
|
node = node.next
|
||||||
|
|
||||||
|
i += 1
|
||||||
|
print(i, insert_index)
|
||||||
|
assert i <= insert_index
|
||||||
|
|
||||||
|
# Definition der "append" Methode ich mag push und pop lieber >:)
|
||||||
|
def push(self, data: int):
|
||||||
|
if self.head is None:
|
||||||
|
self.head = Node(data)
|
||||||
|
return
|
||||||
|
|
||||||
|
node = self.head
|
||||||
|
assert node is not None
|
||||||
|
|
||||||
|
while True:
|
||||||
|
if node.next is None:
|
||||||
|
node.next = Node(data)
|
||||||
|
return
|
||||||
|
node = node.next
|
||||||
|
|
||||||
|
def pop(self) -> int | None:
|
||||||
|
if self.head is None:
|
||||||
|
return None
|
||||||
|
|
||||||
|
node = self.head
|
||||||
|
|
||||||
|
assert node is not None
|
||||||
|
|
||||||
|
if node.next is None:
|
||||||
|
data = node.data
|
||||||
|
self.head = None
|
||||||
|
return data
|
||||||
|
|
||||||
|
assert node.next is not None
|
||||||
|
|
||||||
|
while True:
|
||||||
|
prev_node = node
|
||||||
|
node = node.next
|
||||||
|
|
||||||
|
if node.next is None:
|
||||||
|
data = node.data
|
||||||
|
prev_node.next = None
|
||||||
|
return data
|
||||||
|
|
||||||
|
def len(self) -> int:
|
||||||
|
node = self.head
|
||||||
|
i = 0
|
||||||
|
|
||||||
|
while node is not None:
|
||||||
|
node = node.next
|
||||||
|
i += 1
|
||||||
|
|
||||||
|
return i
|
||||||
|
|
||||||
|
def print(self):
|
||||||
|
node = self.head
|
||||||
|
while node is not None:
|
||||||
|
print(node.data)
|
||||||
|
node = node.next
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
from linked_list import LinkedList
|
||||||
|
|
||||||
|
list = LinkedList()
|
||||||
|
assert list.len() == 0
|
||||||
|
list.push(123)
|
||||||
|
assert list.len() == 1
|
||||||
|
list.push(456)
|
||||||
|
assert list.len() == 2
|
||||||
|
list.push(789)
|
||||||
|
assert list.len() == 3
|
||||||
|
list.insert(-10, 1)
|
||||||
|
list.print()
|
||||||
|
assert list.len() == 4
|
||||||
|
print(list.len())
|
||||||
|
|
||||||
|
print(list.pop())
|
||||||
|
assert list.len() == 3
|
||||||
|
print(list.pop())
|
||||||
|
assert list.len() == 2
|
||||||
|
print(list.pop())
|
||||||
|
assert list.len() == 1
|
||||||
|
print(list.pop())
|
||||||
|
assert list.len() == 0
|
||||||
|
|
||||||
|
|
||||||
|
# node3 = Node(333)
|
||||||
|
# node2.next = node3
|
||||||
|
|
||||||
|
# print(node1.data, node1.next.data, node2.next)
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
```mermaid
|
||||||
|
classDiagram
|
||||||
|
class Item {
|
||||||
|
count: int
|
||||||
|
kind: int
|
||||||
|
inc(amount: int) None
|
||||||
|
}
|
||||||
|
|
||||||
|
class Kart {
|
||||||
|
speed_max: int
|
||||||
|
color: String
|
||||||
|
ram(other: Kart) None
|
||||||
|
consume_item(item: Item) None
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
- Die Methode `inc(amount)` der Klasse `Item` ändert das Attribut `.count` um die eingegebene Zahl.
|
||||||
|
- Die Methode `ram(other)` in `Kart` tauscht die Geschwindigkeiten der beiden gegebenen Karts.
|
||||||
Reference in New Issue
Block a user