풀어본 결과를 올리는 것일뿐, 정답은 아니라는점... 주륵..


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와 비교해야하는 듯





+ Recent posts