저는 Colorado Mesa University의 Csci 학생입니다. 부서 헤드는 연결리스트를위한 접지 방법을 가르친다 :
접지 된 목록을 사용하는 것이 더 나은가요?
struct nodeType
{
int id;
nodeType *link;
};
void createList(nodeType *&head, nodetype *&tail)
{
head = new nodetype;
tail = new nodetype;
head->id=-1; //some initialize value
head->link=tail;
tail->link=NULL;
}
void insertList(nodeType *&head, nodeType *&tail)
{
nodetype *knew,*prior, *next;
knew = new nodetype;
knew ->name = name
prior = head;
next = head->link;
while(next != tail && knew->id > next->id)
{
prior = next;
next = next->link;
}
prior->link = knew;
knew->link = next;
}
그녀는이 분명한 이유 가르친다. 머리와 꼬리가 접지 된 상태에서 위의 함수를 호출 할 때 삽입하는 것이 더 쉽습니다. 그런 다음이 두 노드 안에 모든 데이터를 추가하는 함수를 작성하면 삭제 기능을 작성할 때 머리를 삭제하지 않기 때문에 약간 쉽습니다. 또는 꼬리가있어 목록을 잃어 쓰레기가 생기는 것을 어렵게 만듭니다.
내 알고리즘 교수는 "현실 세계에서"비 접지리스트가 더 나을 것 다른 곳에서 나는 목록을 발생하는 것을 말한다. STL과 인터넷을 사용하는 다른 언어에서는 머리와 꼬리를 구현하는 목록 기능을 찾지 못했습니다.
저는 교수님이 현실 세계라고 생각하는 것이 아니라 실제 현실 세계에서 프로그래밍을 준비하고 싶습니다. 그래서 제 질문은 이것입니다 : 어느 것이 든 더 쉽게 찾을 수있는 것을 사용하는 것이 더 좋습니까? , 또는 두 문제를 염두에두고 각 문제에 접근하고 있습니까?
날이 불화를 해결할 수 있도록 시간에 미리 감사드립니다. "현실 세계"그건 그냥 구현 세부 사항이기 때문에, 당신은 다른 프로그래머가 설계, 구현, 최적화 및 테스트 한 것을 목록을 사용하고, 당신이 이제까지는 "접지"되어 있는지 여부를 알 수 없습니다에서
봐는 하나 더 문제를 해결하는 데 도움이 될 것입니다. 여러 번 당신은 항상 꼬리에 대해 알 필요가 없습니다. 당신이하는 다른 시간. 개인적으로 필자는 몇 년 후에 "실제 세계에서"연결된 목록을 사용하지 않았으므로 둘 중 하나를 필요로하지 않을 수도 있습니다. :) – cHao
현실 세계에서 프로그래밍. 필자는 25 년 동안의 상업적 코딩에서 링크드리스트를 구현했으며 실수로 판명되었습니다. 대답은 귀하의 과제를 표시하는 것이 원하는대로하십시오. 라 라 땅 밖에서, 당신은 단지 맞는 기존의 지시를 받거나, 그것이 할 때까지 큰 망치를 사용한다. :( –
참고로,하지만, (1) "접지"방법은 나에게 오히려 이상한 보이는 것으로, 하나를 사용하는 경우. 그것은 ++ C를 만약 (2), 그 함수가 존재하지 않아야합니다. 헤드/테일 포인터는 숨겨져 야 (3) 그 코드가 진짜 코드라면 틀린 것입니다. 머리와 꼬리를 다시 보지 않게 될 것입니다. 왜냐하면 여러분이 로컬 'head'와 'tail'에 재 할당하기 때문입니다. – cHao