def Slist_sort(class1): class1_length = class1.length() new_Slist = Slist() i = 0 refer1 = class1.head while (i < class1_length): new_Slist.insert_front(refer1.item) refer1 = refer1.next i += 1 return new_Slist.print_list()
def sorting_by_k(class1, k): class1_leng = class1.length() i = 0 more_than = Slist() less_than = Slist() refer = class1.head while i < class1_leng: if (refer.item <= k): less_than.insert_front(refer.item) else: more_than.insert_front(refer.item) i += 1 refer = refer.next return more_than.print_list(), less_than.print_list()
from linked_slist import Slist def find_middle(class1): class1_leng = class1.length() middle_point = class1_leng // 2 i = 0 refer = class1.head while i < middle_point: refer = refer.next i += 1 return refer.item s = Slist() s.insert_front(7) s.insert_front(3) s.insert_front(2) s.insert_front(1) s.insert_front(0) s.insert_front(8) s.print_list() print(find_middle(s))
def Slist_sort(class1, class2): class1_length = class1.length() class2_length = class2.length() new_Slist = Slist() new_Slist_head = new_Slist.head i = 1 j = 1 refer1 = class1.head refer2 = class2.head while (i < class1_length) or (j < class2_length): if (refer1.item > refer2.item): new_Slist.insert_after(refer1.item, new_Slist_head) refer1 = refer1.next print(new_Slist_head) new_Slist_head = new_Slist.head.next i += 1 else: new_Slist.insert_after(refer2.item, new_Slist_head) new_Slist_head = new_Slist.head.next refer2 = refer2.next j += 1 if i < class1_length: while i < class1_length: new_Slist.insert_after(refer1.item, refer2) refer1 = refer1.next i += 1 else: while j < class2_length: new_Slist.insert_after(refer2.item, refer1) refer2 = refer2.next j += 1 return new_Slist.print_list()
new_Slist.insert_after(refer2.item, new_Slist_head) new_Slist_head = new_Slist.head.next refer2 = refer2.next j += 1 if i < class1_length: while i < class1_length: new_Slist.insert_after(refer1.item, refer2) refer1 = refer1.next i += 1 else: while j < class2_length: new_Slist.insert_after(refer2.item, refer1) refer2 = refer2.next j += 1 return new_Slist.print_list() if __name__ == '__main__': s = Slist() s.insert_front(7) s.insert_front(3) s.insert_front(2) s.insert_front(1) # print(s.head.next.item) e = Slist() e.insert_front(9) e.insert_front(6) e.insert_front(4) e.insert_front(0) Slist_sort(s, e)
from linked_slist import Slist def find_cycle(class1): class1_leng = class1.length() refer = class1.head for i in range(class1_leng): if (refer.next == refer): return True refer = refer.next return False s = Slist() s.insert_front(7) s.insert_front(3) s.insert_front(2) s.insert_front(1) s.insert_front(0) s.insert_front(8) print(find_cycle(s))
from linked_slist import Slist def sorting_by_k(class1, k): class1_leng = class1.length() i = 0 more_than = Slist() less_than = Slist() refer = class1.head while i < class1_leng: if (refer.item <= k): less_than.insert_front(refer.item) else: more_than.insert_front(refer.item) i += 1 refer = refer.next return more_than.print_list(), less_than.print_list() s = Slist() s.insert_front(7) s.insert_front(8) s.insert_front(3) s.insert_front(2) s.insert_front(1) s.print_list() sorting_by_k(s, 3)
class2_length = class2.length() refer1 = class1.head i = 0 while i < class1_length: refer2 = class2.head j = 0 while j < class2_length: if (refer1.item == refer2.item): result += refer1.item refer2 = refer2.next j += 1 refer1 = refer1.next i += 1 return result s = Slist() s.insert_front(7) s.insert_front(3) s.insert_front(2) s.insert_front(1) s.print_list() # print(s.head.next.item) e = Slist() e.insert_front(9) e.insert_front(1) e.insert_front(7) e.insert_front(0) e.print_list() print(repeat_num_sum(s, e))
def double_(class1, class2): class1_leng = class1.length() class2_leng = class2.length() result_Slist = Slist() result_Slist.insert_front('head') # 들어온 객체와 똑같이 형식 맞춰주기 위해 'head' 삽입 result_head = result_Slist.head i = class1_leng j = class2_leng refer1 = class1.head # 각 'head' refer2 = class2.head while (i != 1) and (j != 1): # 객체에서 요소가 하나가 될 때까지 if (abs(i - j) != 0): # 만약 두 객체의 길이가 다르다면 if i > j: # i가 더 크면 더 큰 자리수에 있는 수를 컨트롤 하기 위해 i -= 1 result_Slist.insert_after( refer1.next.item, result_head) # 더하기를 위해 쓰이지 않는 앞의 숫자들은 새로운 객체 앞으로 먼저 넣음 refer1 = refer1.next result_head = result_head.next else: j -= 1 result_Slist.insert_after(refer2.next.item, result_head) refer2 = refer2.next result_head = result_head.next continue values_sum = refer1.next.item + refer2.next.item # 값 더한 후 저장 if (values_sum > 100): # 올림 값 추출 if result_head.item == 'head': # 앞이 숫자가 아니라 head일 경우 result_head.item = 1 # 값을 1로 저장 else: result_head.item += 1 # 1을 더해줌 values_sum -= 100 result_Slist.insert_after(values_sum, result_head) # 해당 값 연결리스트에 추가 refer1 = refer1.next refer2 = refer2.next result_head = result_head.next # 다음 숫자로 넘어가기 i -= 1 j -= 1 return result_Slist.print_list()
if (values_sum > 100): # 올림 값 추출 if result_head.item == 'head': # 앞이 숫자가 아니라 head일 경우 result_head.item = 1 # 값을 1로 저장 else: result_head.item += 1 # 1을 더해줌 values_sum -= 100 result_Slist.insert_after(values_sum, result_head) # 해당 값 연결리스트에 추가 refer1 = refer1.next refer2 = refer2.next result_head = result_head.next # 다음 숫자로 넘어가기 i -= 1 j -= 1 return result_Slist.print_list() s = Slist() s.insert_front(22) s.insert_front(0) s.insert_front(1) s.insert_front('head') s.print_list() e = Slist() e.insert_front(88) e.insert_front(99) e.insert_front(99) e.insert_front(2) e.insert_front('head') e.print_list() double_(s, e)