#!/usr/bin/env python
# -*- coding: utf-8 -*-
class LinkedList:
#определяется первый и последний элементы списка и его длина
def __init__(self):
self.first = None
self.last = None
self.length = 0
#распечатка содержимого списка
def __str__(self):
if self.first != None:
current = self.first
out = ‘LinkedList [\n’ +str(current.value) +'\n'
while current.next != None:
current = current.next
out += str(current.value) + ‘\n’
return out + ‘]’
return 'LinkedList '
#очистка списка
def clear(self):
self.__init__()
return None
#добавление эл тов в конец списка
def add(self, x):
self.length+=1
if self.first == None:
#self.first и self.last будут указывать на одну область памяти
self.last = self.first = Node(x, None)
else:
#здесь, уже на разные, т.к. произошло присваивание
self.last.next = self.last = Node(x, None)
#удаление списка
def delete(self):
return None
#содание списка
def create(self):
return None
#проверка списка на пустое поле и на нулевую позицию, вставка элемента на нужную позицию
def InsertNth(self,i,x):
if self.first == None:
self.last = self.first = Node(x, None)
return
if i == 0:
self.first = Node(x,self.first)
return
curr=self.first
count = 0
while curr != None:
count+=1
if count == i:
curr.next = Node(x,curr.next)
if curr.next.next == None:
self.last = curr.next
break
curr = curr.next
return None
#Удаление повторяющихся значений
def RemoveDuplicates(self):
if (self.first == None):
return
old=curr = self.first
while curr != None:
if curr.next != None:
if old.value == curr.next.value:
curr.next = curr.next.next
else:
old=curr = old.next
curr=curr.next
return None
#подсчет элементов в списке
def len(self):
length =0
if self.first != None:
current = self.first
while current.next != None:
current = current.next
length +=1
return length+1#+1 для учета self.first
в общем я реализовал этот класс… у меня возникла проблема… мне нужно его потестить, для этого нужно создать модуль проверки содержащий в себе эти тестовые функции…
c r e a t e_l i s t ( ) 􀀀> Li s t
d e l e t e_l i s t ( Li s t ) 􀀀> t rue | error
is_empty ( Li s t ) 􀀀> t rue | f a l s e
ins e r t_i t em ( Li s t , item_index , item) 􀀀> t rue | error
remove_item( Li s t , item_index ) 􀀀> t rue | error
get_item( Li s t , item_index ) 􀀀> item | error
length ( Li s t ) 􀀀> i n t e g e r
вопрос… как это сделать? и мб я что нить неправильно написал в функциях… поправьте меня, если не сложно) буду Вам признателен