2020. 10. 22. 10:01ㆍDiary/1~100
파이썬으로 CDR 개발을 시작하면서 막히게 되는 부분이 많아졌는데, 다시 C언어를 하면서 생각이 전환될만한 것을 찾아볼까 한다.
문제 | 단일 연결 리스트의 길이 구하기 |
설명 | 노드의 길이를 int 형으로 반환하는 length 함수 만들기 |
단일 연결 리스트의 구조(노드 구조는 struct Node)
§ 연결 리스트
• 리스트의 연결 자료구조로 표현
• 연결하는 방식에 따라 단순 연결 리스트와 원형 연결 리스트, 이중 연결 리스트, 이중 원형 연결 리스트
§ 연결 리스트의 노드
• 연결 자료구조에서 하나의 원소를 표현하기 위한 단위 구조
• 데이터 필드 (Data Field)
− 원소의 값을 저장
− 저장할 원소의 형태에 따라서 하나 이상의 필드로 구성
• 링크 필드 (Link Field)
− 다음 노드의 주소를 저장
− 포인터 변수를 사용하여 주소값을 저장
§ 단순 연결 리스트 (Singly Linked List)의 개념
• 노드가 하나의 링크 필드에 의해서 다음 노드와 연결되는 구조를 가짐
§ 단순 연결 리스트 (Singly Linked List)에 삽입하는 방법
§ 단순 연결 리스트 (Singly Linked List)에서 노드를 삭제하는 방법
§ 단순 연결 리스트 (Singly Linked List)의 알고리즘
• 첫 번째 노드로 삽입하기
➊ new ← getNode();
➋ new.data ← x;
➌ new.link ← L;
삽입할 노드를 연결하기 위해서 리스트의 첫 번째 노드 주소(L)를 삽입할 새 노드 new의 링크 필드(new.link)에 저장하여, 새 노드 new가 리스트의 첫 번째 노드를 가리키게 한다.
➍ L ← new;
리스트의 첫 번째 노드 주소를 저장하고 있는 포인터 L에, 새 노드의 주소 new를 저장하여, 포인터 L이 새 노드를 첫 번째 노드로 가리키도록 지정
§ 포인터 멤버 연산자 ( -> )
• 구조체 포인터를 선언하게 될 경우, 포인터 멤버 연산자를 통해 참조해줘야 한다.
• 구조체 포인터 이름 -> 멤버 이름 = (*구조체 포인터 이름).멤버 이름
C
'Diary > 1~100' 카테고리의 다른 글
52일차 파이썬 CDR 개발 - 12 (0) | 2020.10.24 |
---|---|
51일차 파이썬 CDR 개발 - 11 (0) | 2020.10.23 |
49일차 파이썬 CDR 개발 - 10 (0) | 2020.10.21 |
48일차 파이썬 CDR 개발 - 9 (0) | 2020.10.20 |
47일차 파이썬 CDR 개발 - 8 (0) | 2020.10.19 |