[C언어] 연결 리스트의 역순 (Reversed Linked List)

hhkim·2022년 3월 24일
0

자료구조 스터디

목록 보기
2/10
post-thumbnail

연결 리스트를 인자로 받아서 뒤집어주는 함수

구현

구조체와 함수 원형

typedef struct ListNodeType
{
	int					data;
	struct ListNodeType	*pLink;
}	ListNode;

typedef struct LinkedListType
{
	int			currentElementCount; // 현재 저장된 원소의 개수
	ListNode	headerNode;	 // 헤더 노드(Header Node)
}	LinkedList;

void		reverseLinkedList(LinkedList* pList);	// linkedlist 역순

함수 정의

  1. 1번째 노드가 NULL을 가리킴
  2. 2번째 노드는 1번째 노드, 3번째 노드는 2번째 노드 ...
  3. 노드 간의 연결이 끝나면 헤더 노드가 기존의 마지막 노드를 가리키게 함
void	reverseLinkedList(LinkedList* pList)
{
	ListNode	*prev;
	ListNode	*curr;
	ListNode	*next;

	if (pList == NULL)
		return ;
	prev = NULL;
	curr = pList->headerNode.pLink;
	for (int i = 0; i < pList->currentElementCount; i++)
	{
		next = curr->pLink;
		curr->pLink = prev;
		prev = curr;
		curr = next;
	}
	pList->headerNode.pLink = prev;
}

🔗 연결 리스트 전체 코드

0개의 댓글