[연결리스트] 헤드를 2개이상 운용할수있나요..?
카라
질문 제목 : [연결리스트] 헤드를 2개이상 운용할수있나요..?질문 내용 :
지하철노선도 제작중입니다. 최단거리를 찾기위해서 양옆으로 이동해야하다보니 헤드를 두개이상 운행해야될 필요성을 느끼고있는데
헤드(Head)를 2개이상 한꺼번에 운용가능하나요..?
예를들어 A B C D E가 순차적으로있을때
C역이 기존헤드이고, 1번알고리즘은C-D-E로 검사하고, 2번알고리즘은 C-B-A로 검사하고싶습니다.
그냥 1번알고리즘 다끝내고 2번시작하면되지만 원하는 목적지가 있을때 두 알고리즘중 먼저도착하면 검사를 끝나게하여 시간을 줄이고싶습니다. 어떻게해야할까요
-
세찬 2023-10-14
아 감사합니다. head만 생각하다보니 이런생각을 못했네요 감사합니다.
-
영동교 2023-10-14
head랑은 다르고요, 기존의 노드 탐색 방법과 같습니다. 양방향으로 동시에 체크한다는게 다르지만.
-
가을빛 2023-10-14
음 움직이는 커서노드를 따로만들어서 기존에 만들어진 노드를 이동하라 이말씀 맞나요..?
이렇게하면 head선언이랑 기능은 같게되나요? -
소윤 2023-10-14
check는 그냥 이 역이 내가 찾고자 하는 역이 맞는지를 확인하는 코드로 대체해서 넣으시면 될것같네요.
Node는 그냥 연결 리스트 노드입니다. 님이 사용하신 연결 리스트 구조체의 이름을 몰라서 그냥 Node로 칭했습니다. prev, next는 이중 연결 리스트의 앞/뒤로 가는 포인터 -
물보라 2023-10-14
check(cur1)은 무슨의미인가요..?winapi에도 check함수는 안보여서...
그리고 맨위에줄에 Node는 구조체 안에 선언해야하나요..? -
꽃바라기슬아 2023-10-14
Node *cur1 = start_station, *cur2 = start_station, *retval = NULL;
while(cur1 != NULL || cur2 != NULL) {
if(cur1 && check(cur1) == 1) retval = cur1;
else if(cur2 && check(cur2) == 1) retval = cur2;
if(cur1) cur1 = cur1-prev;
if(cur2) cur2 = cur2-n