풀어본 결과를 올리는 것일뿐, 정답은 아니라는점... 주륵..
2.7 각각 정렬되어 있는 2개의 단순 연결리스트를 하나의 정렬된 단순연결리스트로 만드는 함수를 작성하시오
(이하 함수는 clsss안에서 만듬)
def add_two(self, slst):
sh = slst.head
fh = self.head
while sh != None:
if fh.item >sh.item:
self.insert_front(sh.item);
sh = sh.next
else:
fh = fh.next
continue;
1. 외부서 리스트를 받는다.
2. 각 리스트의 헤드를 초기화
3.여기서 기준이 될 리스트를 정해준다, 여기선 fh가 기준
원리는 fh, sh를 비교하고 fh보다 작으면 앞에다 넣고
sh를 옆으로 옮긴다. fh는 옮기지 않는다
4. 3이 아닐 경우 기준을 옮겨준다.
node와 item이 좀 헷갈림..
2.10
각 노드에 1개의 정수가 저장된 단순연결리스트와 정수 k가 주어질때 이 단순연결리스트를 하나는 k와 같거나 작은 정수를 가진 연결리스트로, 다른 하나는 k보다 큰 정수를 가진 노드들로만 구성된 연결 리스트로 분리하는 함수를 작성하시오
def seperate(self, k):
s = tdlist();
m = tdlist();
num = 0;
dh = self.head;
while num < self.size:
if dh.item < k:
s.insert_front(dh.item);
dh = dh.next;
num += 1;
elif dh.item >= k:
m.insert_front(dh.item)
dh = dh.next;
num += 1;
elif dh == None:
break;
return(s, m)
1. 두개의 클래스를 만든다. 값을 나눠야 하니까..
2. num은 while의 플래그로 횟수를 카운트 한다.
즉 처음 단순연결리스트의 사이즈 횟수만큼 돌아간다
3. 해당 아이템이 지정된 수 보다 작으면 s, 크거나 같으면 m에 넣는다
여기서도 헷갈리는 부분으 dh와 dh.item,
None은 노드 값이라 dh.item이 아닌 dh와 비교해야하는 듯
'파이썬' 카테고리의 다른 글
파이썬과 함께하는 자료구조 8장 그래프(알고리즘) (0) | 2018.05.07 |
---|---|
파이썬과 함께하는 자료구조 8장 그래프 (0) | 2018.05.03 |
파이썬과 함께하는 자료구조 5장 탐색트리 (0) | 2018.04.29 |
파이썬과 함께하는 자료 4장 트리구조 (2) | 2018.04.24 |
파이썬과 함께하는 자료구조의 이해 챕터3 연습문제 (0) | 2018.04.16 |