초 는 단일 체인 표 와 그 반전 (reverse) 을 안다.
1178 단어 구조 알고리즘 의 아름다움
링크 는 배열 보다 삽입, 삭제 가 용이 합 니 다.
Node 는 다음 과 같이 정의 할 수 있 습 니 다.
typedef int element_type;
typedef struct node *node_ptr;
struct node {
element_type element;
node_ptr next;
};
그리고 머리 노드 를 할 지 말 지 에 대해 저 는 머리 노드 를 추가 하 는 것 을 제안 합 니 다. 이 유 는 다음 과 같 습 니 다.
1. 헤드 노드 가 없 으 면 첫 번 째 노드 를 삭제 한 후 실수 로 List 를 잃 어 버 립 니 다.
2. 머리 를 삽입 할 때 직관 적 인 방법 이 없다.
3. 일반적인 삭제 작업 은 먼저 앞의 노드 를 찾 아야 한다. 만약 에 머리 노드 가 없 으 면 첫 번 째 노드 를 삭제 하면 다르다.
그 다음 에 단일 체인 표 의 반전 을 중점적으로 실현 하 는 것 도 흔히 볼 수 있 는 문제 이다. 다음은 C 언어 실현 이다.
void list_reverse(LIST L)
{
if (L->next == NULL) return;
node_ptr p = L->next, first = L->next;
while (p != NULL && p->next != NULL) {
node_ptr next_node = p->next;
p->next = next_node->next;
next_node->next = first;
first = next_node;
}
L->next = first;
}
다른 조작 에 대해 서 는 일일이 열거 하지 않 겠 습 니 다. 여러분 은 저의 github 에 관심 을 가 져 주 셔 도 됩 니 다.
https://github.com/booirror/data-structures-and-algorithm-in-c