과학

대충 쓰는 컴퓨터 자료구조 - 리스트

[대충 쓰는 컴퓨터 자료구조 - 개론] http://www.dogdrip.net/43805214


사실 얼마만에 쓰는건지 모르겠다.

방학시즌이 돌아왔으니 다시 달려야지...


이번에 소개할 자료구조는 리스트!


그럼 리스트가 실생활에서는 뭔지 생각해보자.

그리고 사전에서도 찾아보자.


 캡처.PNG

그러하다...

(어? 사전에 내가 설명하려던게 있다...)


컴퓨터에서의 리스트도 실생활에서의 리스트와 똑같다!


무엇인가를 순차적으로 저장할때 사용함.

대신 각 데이터들마다 순차적인 번호가 부여되어있지.

또한 리스트는 중간의 방이 절대로 비어있어서는 안되!


우선 컴퓨터에서 사용하려는 리스트의 정의(?)이지..


그럼 이 리스트를 컴퓨터 메모리상에서 어떻게 표현을 해야하는지 알아보자고?

리스트는 연속된 표현과 연결된 표현 이렇게 두가지로 볼수 있어.


잠깐 다른 이야기로 가볼까?

연속된 표현은 우리가 쓰는 컴퓨터 메모리와 똑같은 구조를 가지고 있지

245번지의 데이터가 뭐야?라고 물으면 100이 들어있어! 라고 가져다주는 형태.

그래서 사실상 연속된 표현의 경우 따로 우리가 해야할일은 없지.


단, 연결된 표현이 문제 인데, 왜 문제이냐면?

1차원 선형 공간인 메모리에서 어떻게 표현할거야?

그렇다. 모든 자료들은 1차원 선형 공간으로 표현할수 있어야되

고로 연결된 표현의 리스트를 어떻게 표현하는지 알려줄거야


다시 돌아와서 연속된 표현의 리스트는


필요한 호텔의 방을 필요한 만큼 미리 예약후 채워나가는방식

근데 예약을 하게 되면 방의 갯수는 절대로 바꿀수 없어.


연결된 표현의 리스트는

호텔에서 방이 필요하면 필요할때마다 방을 잡는방식

근데 방을 직접 찾아 갈순 없고 각 방마다 다음 호실이 적힌 문을 보고 가야되


이제 두가지 리스트의 연산의 종류를 확인해 보자!


1.PNG

<연속표현과 연결표현>


자 그럼 두가지 표현이 있으면 뭐가 더 좋은걸까?

사실 자료구조에 있어서 어떤게 좋고 나쁘고 한건 없음.

그러니 용도에 맞게 쓸수 있게 어떤 장단점이 있는지 보자.


우선 연속된 표현의 최대 장점은 데이터의 탐색이나 데이터의 직접 접근에 있어서 빠른 성능을 보인다는거야.

연속된 표현의 한계는 데이터를 중간에 삭제하거나 중간에 넣어버리면 나쁜 성능을 보여줘.

당연한 이야기지만 예약된 방의 크기가 부족하면 데이터를 더이상 추가 할수가 없다.


자 이제 아래 사진을 보면서 왜 나쁘고 왜 좋은지를 보자.


2.PNG

<연속된 표현의 데이터 접근>

연속된 표현의 직접 접근 방법. 그냥 해당  호실을 기준으로 몇번째 호실에 있나를 계산해버리면됨.

그래서 한번의 연산으로 접근이 가능하지.


3.PNG

<연속된 표현의 삭제>

연속된 표현은 추가/삭제에서 나쁜 성능을 보여주는이유야

"어? 그냥 저 방을 비워 두면 안되?"

리스트의 정의중 리스트는 중간의 방이 비어있으면 안된다는 정의에 어긋나지.

이 정의를 맞춰주기 위해서 비어있는 공간으로 모든 데이터를 하나씩 하나씩 이동을해.

근데 예외가 하나 있어.

만약 맨뒤에서 삭제가 된다면?

어 그냥 그거 지우면되.


또 질문이 있겠지

"어? 그냥 통째로 이동해버리면안되?"

어... 안되.. 컴퓨터에서는 그게 안되.. SIMD(몰라도됨) 명령을 쓰지 않는이상...

(근데 SIMD도 한계가 있는데... 하나씩 옮기는걸 4개 8개로 늘려준다는거?)


4.PNG


<연속된 표현의 삽입>

어 이것도 삭제랑 비슷해

중간에 데이터가 끼어 들어가야 하기 때문에

데이터를 한칸씩 밀어주고 중간에 넣어줘야되.

역시 좀 빠르게 하고 싶다면 SSE나 MMX같은 CPU에서 제공하는 SIMD명령어를 써야지..

(위에서도 말했지만 SIMD도 한계가 존재함..)

역시 여기도 예외가 있어.

공간이 어느정도 있고 뒤에서 삽입이 일어난다면?

어.. 그냥 넣으면되...


5.PNG


<연속된 표현의 오버플로우>

(헉! 옵플... 이거 닉 언급인가..?)

더 이상 원소가 들어갈 공간이 없어.

그래도 넣고 싶다면 새로운 공간을 요구하고

새로운 공간에 데이터를 싹다 복사해줘야지.


6.PNG

<연결된 표현의 삭제>

연결된 표현의 경우 중간에서 삭제가 되는경우.

꼭 필요한 연산이 있어.

바로 탐색이야. 왜냐하면 연결된 표현은 항상 해당 위치로 꼬리를 물어가면서 찾아가야되

마치 다음 힌트를 보고 다음 관문을 찾아가듯이..?

생각해보면


"어? ㅅㅂ 저거 종나 꾸진 자료구조 아니냐?"

단, 연속된 표현과 다르게 자료의 이동연산이 없다.

그저 A는 C가 살던 호실을 지우고, D가 살고 있는 호실로만 기록하면되.


7.PNG

<연결된 표현의 삽입>

삭제와 동일

단, 방을 예약을 받고 호실을 바꿔주는 작업만 하면된다.


8.PNG

<연결된 표현의 탐색>

유일한 단점.

왜냐고? 원하는 번호의 방이 나올때까지 저 꼬리표를 따라가야됨.


자 이제 두가지 리스트를 소개를 했어

자 이제 결론을 내려보자.


1. 리스트는 연속된 표현의 리스트, 연결된 표현의 리스트 두 가지가 있다.

2. 모든 자료구조가 그렇듯이 저 두가지 방식에도 트레이드 오프를 생각해봐야된다.

3. 데이터 변화가 별로 없음 -> 연속표현

4. 데이터의 변화가 심함 -> 연결된 표현이 적합.


9.PNG

<빅오로 표현한 성능>


만약 더 심화된 내용을 보고 싶다면

아래 링크에 있는 맨뒤에 잇는 번외편을 보면 될듯..

http://www.slideshare.net/SamuelLee33/ss-49745117


이 다음은 트리다! 흐흐흫...


아 등판 안할라 그랬는데 사실 catdrip.net 도메인 내가 등록한거... ㅋㅋㅋ

30개의 댓글

2015.06.24
서버 사는데 얼마나 듬?
0
2015.06.24
@반갑소
엥? 서버 산적 없는데?

나는 도메인만 샀음...
0
2015.06.24
@잉텔
다른건가.. 도메인 값이 얼마야?
0
2015.06.24
@반갑소
2만원/년 (VAT별도) 가비아기준
0
2015.06.24
@잉텔
왜 산건지 대답해줄수있음? ㅋㅋ
0
2015.06.24
@반갑소
걍... 이유 있나? ㅋㅋㅋ
0
2015.06.24
자료구조ㅅㅂ....
0
2015.06.28
@쉬림프
왜 알고리즘만큼 재밌는 과목이다..
0
2015.06.28
@잉텔
난 알고리즘도 그켬이라..
0
2015.06.24
이거 딱 보고 이해 못하는 사람은 컴터배우면안됨
0
2015.06.28
@babo
자료구조라는게 그냥 사람이 일상생활에 쓰던 정리 방식을 컴퓨터로 모델링했다고 보는거라...

솔직히 모델링 자체를 못하면 컴퓨터를 안하는게 나음..

ps.. 근데 나는 수학적 모델링을 못하잖아? ㅠㅠ
0
2015.06.24
트리 표현이 웃기지...
배열로도 가능하고, 연결리스트로도 가능하고...
0
2015.06.28
@뒷짐진강아지
그래서 그냥 트리랑 힙트리일때만 연속된 표현하고 다 링크로 표현할거
0
2015.06.25
관심없는 사람은 은근 이해하기 어려운 개념
아니 귀찮다고 해야하나?
0
2015.06.25
@XCOM
공간적인 개념이 중요한거 같음...
내가 그런식으로 이해를 해서...
0
2015.06.28
@XCOM
그냥 일상에서 쓰던걸 자세히 풀어쓰는거라 어떻게 보면 귀찮지..
0
2015.06.26
존1나 오랜만에 쓰네...
0
2015.06.28
@박음직스럽다
미안..
0
2015.06.28
님 컴공과?
0
2015.06.28
@ᅠ ᅠ
컴과니깐 저런 이야기를 쓰겠지?
0
2015.06.28
@잉텔
컴공과 가고싶은 고3인데 취업때문에 좀 고민됨...
0
2015.06.28
@ᅠ ᅠ
취업걱정 ㄴㄴ해 컴공은 어떻게든 먹고삼 ㅋ
0
2015.06.28
@박음직스럽다
ㅇㄱㄹㅇ

다만 연봉이 다달라 ㅋㅋㅋㅋㅋ
0
2015.06.28
@잉텔
연봉 상관안하고 일 적은데로 가서 적당한 외주뛰면서 해야지 뭐 ㅋㅋㅋㅋㅋ
0
2015.06.28
@박음직스럽다
지금도 가끔 교수들이랑 해서 프로젝트 들어와서 하거나 내가 외주 따서 하는데,

학부인 지금 꽤 짭짤하게 벌어 먹고 잇음 ㅋㅋ

작년에 존나 피크여서 한달에 250씩 벌어 냈는데 지금은 가뭄이다.. 하..

프로젝트도 끝나서 지금 한달에 50~60벌고 있나..?

프로젝트가 기업이랑 하는거라 그래도 나름 꼬박꼬박 돈은 나왔는데...
0
2015.06.28
@잉텔
호주가서 앱개발이나 할까 ㅋㅋㅋㅋㅋ
0
2015.06.28
@박음직스럽다
ㄴㄴ 앱말고 진짜 전문적인거 하셈

예를들어 센서 네트워크 구축, 분산 처리 시스템 개발, 분산 시스템을 이용한 동영상 렌더링 시스템, AMD GPU를 이용한 다중 모니터 출력 솔루션 이런거..
0
2015.06.28
@ᅠ ᅠ
그냥 니가 실력이 어떻게 되냐 어떤걸 전문적으로 하냐에 달려잇음..

보통 학생때는 웹페이지로 알바해서 벌어먹고

취직할때 이제 DBA로 나갈거냐, 진짜 순수 개발자로 나갈거냐, 시스템 메니지먼트로 나갈꺼냐

이렇게 갈림..

다들 어떻게 먹고 살긴 하는데, 힘들어..
0
2015.06.29
@잉텔
알겠엉...


수능 끝나서부터라도 토익 열심히 준비해야겠다
0
2015.06.30
@ᅠ ᅠ
it쪽은 한국 노답 히힣
0
무분별한 사용은 차단될 수 있습니다.
번호 제목 글쓴이 추천 수 날짜
563 [과학] 경계선 지능이 700만 있다는 기사들에 대해 34 LinkedList 12 21 일 전
562 [과학] 번역)새들은 왜 알을 많이 낳는가? - 후투티의 형제살해 습성... 7 리보솜 3 2024.03.23
561 [과학] 학계와 AI, 그리고 Bitter Lesson (쓰라린 교훈) 26 elomn 35 2024.02.17
560 [과학] 지구의 속삭임, 골든 레코드의 우주 9 Archaea 10 2024.02.16
559 [과학] 잔혹한 과학실험 이야기 <1> 절망의 구덩이 19 개드립하면안됨 37 2024.02.15
558 [과학] 스트레스를 받으면 술이 땡기는 이유 12 동식 16 2024.02.10
557 [과학] 지능은 모계유전이 아니다. 40 울릉특별자치도 35 2024.01.26
556 [과학] 진화를 생각할 때 고려할 것들 23 날씨가나쁘잖아 12 2024.01.17
555 [과학] 학문적(과학적) 접근과 유사 진화심리"학" 26 날씨가나쁘잖아 19 2024.01.15
554 [과학] 호모 사피엔스의 야릇한 은폐된 배란에 대한 남녀 학자의 다... 14 개드립하면안됨 15 2023.12.29
553 [과학] 김영하의 작별인사를 읽고 느낀 점 (스포있음) 21 장문주의 2 2023.11.28
552 [과학] 제4회 포스텍 SF 어워드 공모전 ( SF 단편소설 / SF 미니픽션 ) 2 따스땅 1 2023.11.25
551 [과학] 펌) CRISPR 유전자 가위 치료제 "최초" 승인 12 리보솜 7 2023.11.25
550 [과학] 러시아는 기술산업을 어떻게 파괴시켰는가(펌) 9 세기노비는역사비... 15 2023.11.18
549 [과학] 고양이에 의한 섬생태계 교란과 생물 종의 절멸 (펌) 2 힘들힘들고 6 2023.11.16
548 [과학] 번역) 알츠하이머병 유전자는 어떻게 살아남았는가? 12 리보솜 10 2023.11.15
547 [과학] 『우영우』의 자폐 스펙트럼 장애 개념이 왜곡인 이유 (펌) 47 힘들힘들고 10 2023.11.12
546 [과학] 흑수저 문과충 출신 구글 취직하는 파이썬 특강 -1 14 지방흡입기 11 2023.09.27
545 [과학] 국가별 당뇨 유병율 이거 뭐가 바뀐건지 아는사람? 8 LAMBDA 1 2023.09.27
544 [과학] 물샤워 ㅇㅈㄹ 하는 놈들 봐라 171 철동이 48 2023.09.23