[Tutor] Making Doubly Linked List with Less Lines of Code.
WolfRage
wolfrage8765 at gmail.com
Wed Dec 24 22:35:06 CET 2014
I wrote some code recently to make a linked list of Nodes for a 2d
graph, so it consists of rows and columns. Now I wanted to make the code
support being doubly linked, forwards and backwards. The difficult part
of this is that the links are per row and per column. But the code I
think is overly bloated. I am currently working on reducing the
complexity of it. If any one has the time to look at it, if you have
ideas for how I can re-write it to be much smaller I would appreciate
the information. If you need more code let me know, but I tried to
condense it since this singular function is around 325 lines of code.
Thank you.
The function to make the linked list:
def make_linked_lists(self):
previous_row_node = None
previous_col0_node = None
previous_col1_node = None
previous_col2_node = None
previous_col3_node = None
previous_col4_node = None
previous_col5_node = None
previous_col6_node = None
previous_col7_node = None
current_node = None
self.tile_list = list()
for row in range(0, self.rows):
for col in range(0, self.cols):
current_node = self.get_instance_of_id(str(col) + ',' +
str(row))
self.tile_list.append(current_node)
if row == 0:
if col == 0:
self.row0 = current_node
self.col0 = current_node
previous_col0_node = current_node
elif col == 1:
self.col1 = current_node
previous_col1_node = current_node
elif col == 2:
self.col2 = current_node
previous_col2_node = current_node
elif col == 3:
self.col3 = current_node
previous_col3_node = current_node
elif col == 4:
self.col4 = current_node
previous_col4_node = current_node
elif col == 5:
self.col5 = current_node
previous_col5_node = current_node
elif col == 6:
self.col6 = current_node
previous_col6_node = current_node
elif col == 7:
self.col7 = current_node
previous_col7_node = current_node
if previous_row_node is not None:
previous_row_node.next_row_node = current_node
current_node.prev_row_node = previous_row_node
previous_row_node = current_node
elif row == 1:
if col == 0:
self.row1 = current_node
previous_row_node = None
previous_col0_node.next_col_node = current_node
current_node.prev_col_node = previous_col0_node
previous_col0_node = current_node
elif col == 1:
previous_col1_node.next_col_node = current_node
current_node.prev_col_node = previous_col1_node
previous_col1_node = current_node
elif col == 2:
previous_col2_node.next_col_node = current_node
current_node.prev_col_node = previous_col2_node
previous_col2_node = current_node
elif col == 3:
previous_col3_node.next_col_node = current_node
current_node.prev_col_node = previous_col3_node
previous_col3_node = current_node
elif col == 4:
previous_col4_node.next_col_node = current_node
current_node.prev_col_node = previous_col4_node
previous_col4_node = current_node
elif col == 5:
previous_col5_node.next_col_node = current_node
current_node.prev_col_node = previous_col5_node
previous_col5_node = current_node
elif col == 6:
previous_col6_node.next_col_node = current_node
current_node.prev_col_node = previous_col6_node
previous_col6_node = current_node
elif col == 7:
previous_col7_node.next_col_node = current_node
current_node.prev_col_node = previous_col7_node
previous_col7_node = current_node
if previous_row_node is not None:
previous_row_node.next_row_node = current_node
previous_row_node = current_node
elif row == 2:
if col == 0:
self.row2 = current_node
previous_row_node = None
previous_col0_node.next_col_node = current_node
previous_col0_node = current_node
elif col == 1:
previous_col1_node.next_col_node = current_node
previous_col1_node = current_node
elif col == 2:
previous_col2_node.next_col_node = current_node
previous_col2_node = current_node
elif col == 3:
previous_col3_node.next_col_node = current_node
previous_col3_node = current_node
elif col == 4:
previous_col4_node.next_col_node = current_node
previous_col4_node = current_node
elif col == 5:
previous_col5_node.next_col_node = current_node
previous_col5_node = current_node
elif col == 6:
previous_col6_node.next_col_node = current_node
previous_col6_node = current_node
elif col == 7:
previous_col7_node.next_col_node = current_node
previous_col7_node = current_node
if previous_row_node is not None:
previous_row_node.next_row_node = current_node
previous_row_node = current_node
elif row == 3:
if col == 0:
self.row3 = current_node
previous_row_node = None
previous_col0_node.next_col_node = current_node
previous_col0_node = current_node
elif col == 1:
previous_col1_node.next_col_node = current_node
previous_col1_node = current_node
elif col == 2:
previous_col2_node.next_col_node = current_node
previous_col2_node = current_node
elif col == 3:
previous_col3_node.next_col_node = current_node
previous_col3_node = current_node
elif col == 4:
previous_col4_node.next_col_node = current_node
previous_col4_node = current_node
elif col == 5:
previous_col5_node.next_col_node = current_node
previous_col5_node = current_node
elif col == 6:
previous_col6_node.next_col_node = current_node
previous_col6_node = current_node
elif col == 7:
previous_col7_node.next_col_node = current_node
previous_col7_node = current_node
if previous_row_node is not None:
previous_row_node.next_row_node = current_node
previous_row_node = current_node
elif row == 4:
if col == 0:
self.row4 = current_node
previous_row_node = None
previous_col0_node.next_col_node = current_node
previous_col0_node = current_node
elif col == 1:
previous_col1_node.next_col_node = current_node
previous_col1_node = current_node
elif col == 2:
previous_col2_node.next_col_node = current_node
previous_col2_node = current_node
elif col == 3:
previous_col3_node.next_col_node = current_node
previous_col3_node = current_node
elif col == 4:
previous_col4_node.next_col_node = current_node
previous_col4_node = current_node
elif col == 5:
previous_col5_node.next_col_node = current_node
previous_col5_node = current_node
elif col == 6:
previous_col6_node.next_col_node = current_node
previous_col6_node = current_node
elif col == 7:
previous_col7_node.next_col_node = current_node
previous_col7_node = current_node
if previous_row_node is not None:
previous_row_node.next_row_node = current_node
previous_row_node = current_node
elif row == 5:
if col == 0:
self.row5 = current_node
previous_row_node = None
previous_col0_node.next_col_node = current_node
previous_col0_node = current_node
elif col == 1:
previous_col1_node.next_col_node = current_node
previous_col1_node = current_node
elif col == 2:
previous_col2_node.next_col_node = current_node
previous_col2_node = current_node
elif col == 3:
previous_col3_node.next_col_node = current_node
previous_col3_node = current_node
elif col == 4:
previous_col4_node.next_col_node = current_node
previous_col4_node = current_node
elif col == 5:
previous_col5_node.next_col_node = current_node
previous_col5_node = current_node
elif col == 6:
previous_col6_node.next_col_node = current_node
previous_col6_node = current_node
elif col == 7:
previous_col7_node.next_col_node = current_node
previous_col7_node = current_node
if previous_row_node is not None:
previous_row_node.next_row_node = current_node
previous_row_node = current_node
elif row == 6:
if col == 0:
self.row6 = current_node
previous_row_node = None
previous_col0_node.next_col_node = current_node
previous_col0_node = current_node
elif col == 1:
previous_col1_node.next_col_node = current_node
previous_col1_node = current_node
elif col == 2:
previous_col2_node.next_col_node = current_node
previous_col2_node = current_node
elif col == 3:
previous_col3_node.next_col_node = current_node
previous_col3_node = current_node
elif col == 4:
previous_col4_node.next_col_node = current_node
previous_col4_node = current_node
elif col == 5:
previous_col5_node.next_col_node = current_node
previous_col5_node = current_node
elif col == 6:
previous_col6_node.next_col_node = current_node
previous_col6_node = current_node
elif col == 7:
previous_col7_node.next_col_node = current_node
previous_col7_node = current_node
if previous_row_node is not None:
previous_row_node.next_row_node = current_node
previous_row_node = current_node
elif row == 7:
if col == 0:
self.row7 = current_node
previous_row_node = None
previous_col0_node.next_col_node = current_node
previous_col0_node = current_node
elif col == 1:
previous_col1_node.next_col_node = current_node
previous_col1_node = current_node
elif col == 2:
previous_col2_node.next_col_node = current_node
previous_col2_node = current_node
elif col == 3:
previous_col3_node.next_col_node = current_node
previous_col3_node = current_node
elif col == 4:
previous_col4_node.next_col_node = current_node
previous_col4_node = current_node
elif col == 5:
previous_col5_node.next_col_node = current_node
previous_col5_node = current_node
elif col == 6:
previous_col6_node.next_col_node = current_node
previous_col6_node = current_node
elif col == 7:
previous_col7_node.next_col_node = current_node
previous_col7_node = current_node
if previous_row_node is not None:
previous_row_node.next_row_node = current_node
previous_row_node = current_node
elif row == 8:
if col == 0:
self.row8 = current_node
previous_row_node = None
previous_col0_node.next_col_node = current_node
previous_col0_node = current_node
elif col == 1:
previous_col1_node.next_col_node = current_node
previous_col1_node = current_node
elif col == 2:
previous_col2_node.next_col_node = current_node
previous_col2_node = current_node
elif col == 3:
previous_col3_node.next_col_node = current_node
previous_col3_node = current_node
elif col == 4:
previous_col4_node.next_col_node = current_node
previous_col4_node = current_node
elif col == 5:
previous_col5_node.next_col_node = current_node
previous_col5_node = current_node
elif col == 6:
previous_col6_node.next_col_node = current_node
previous_col6_node = current_node
elif col == 7:
previous_col7_node.next_col_node = current_node
previous_col7_node = current_node
if previous_row_node is not None:
previous_row_node.next_row_node = current_node
previous_row_node = current_node
elif row == 9:
if col == 0:
self.row9 = current_node
previous_row_node = None
previous_col0_node.next_col_node = current_node
previous_col0_node = current_node
elif col == 1:
previous_col1_node.next_col_node = current_node
previous_col1_node = current_node
elif col == 2:
previous_col2_node.next_col_node = current_node
previous_col2_node = current_node
elif col == 3:
previous_col3_node.next_col_node = current_node
previous_col3_node = current_node
elif col == 4:
previous_col4_node.next_col_node = current_node
previous_col4_node = current_node
elif col == 5:
previous_col5_node.next_col_node = current_node
previous_col5_node = current_node
elif col == 6:
previous_col6_node.next_col_node = current_node
previous_col6_node = current_node
elif col == 7:
previous_col7_node.next_col_node = current_node
previous_col7_node = current_node
if previous_row_node is not None:
previous_row_node.next_row_node = current_node
previous_row_node = current_node
More information about the Tutor
mailing list