링크 된 목록을 되돌리려 고했지만 다음 함수를 실행할 때마다 마지막 요소 만 가져옵니다. 예를 들어 목록에 이전에 11,12,13이 포함되어있는 경우 기능을 실행 한 후, 당신의 루프 가드가 그 시작이 null 보장하지 않습니다 내 코드링크 된 목록을 되돌릴 수 없습니다.
void reverselist()
{
struct node *a,*b,*c;
a=NULL;
b=c=start;
while(c!=NULL)
{
c=b->next;
b->next=a;
a=b;
b=c;
}
start=c;
}
왜 메모리를 할당? – JimR
글쎄, 당신의 목록에 addAtTail/addAtHead 유형의 호출이 있다면, 하나의 목록을 거꾸로 읽고, 새 목록을 추가하고, 이전 목록을 삭제()하는 것은 기존 목록을 0/1 항목으로 잘라내는 것을 생각하는 것보다 쉽습니다. 코너 케이스 등. 그것은 게으르고 비효율적입니다. 그렇습니다. 그러나 작업이 드물고 시간이 본질적이지 않은 경우에 그것을 고백합니다. –
@MartinJames : 한 번 쓰고 스 니펫 파일에 집어 넣으시겠습니까? :) – JimR