나는 링크 된 목록이 최선의 접근 방식이라고 생각하지 않습니다. 나를 잘못 받아들이지는 마라. 그러나 링크드리스트는 무작위로, 가장 일반적으로 시작이나 끝에서 추가하고 제거하는 데 사용된다. 문제는 부질간 링크리스트는 일반적인 배열처럼 요소를 찾는 것이 비효율적이라는 것입니다. 왜냐하면 그것이 발견 될 때까지 각 요소를 검사해야하기 때문입니다.
배열을 사용하면 프로그램의 효율성과 복잡성이 줄어들 것입니다. 두 데이터 구조 (링크드리스트 및 어레이) 비교
:
찾기 요소의 평균 길이에 비례하는 경우 모두있다.
끝에 삽입 요소는 두 구조에서 모두 일정합니다.
링크 된 목록은 요소를 어느 위치 에나 추가하는 것이 효율적이지만 위치를 찾아야하므로 배열의 오른쪽에 한 위치 씩 오른쪽 요소를 이동해야하는 배열 문제가 해결됩니다.
는 뭔가
typedef struct
{
int score;
char name[51]; //name should hold 50 chars and null
} highScore;
highScore scores[10]; // voilla 10 scores
//or if you need little bit of complications
//and more speed when moving array during insertion
highScore * scorespointer[10]; //array of 10 pointers on score
처럼 연결된 목록으로 간단한 솔루션 오순절 같은 효율성을 만들 것이라고 생각합니다.
구조체를 연결 목록으로 구현하면 이름과 점수 만 저장할 수 있기 때문에 파일에서 직접 직렬화 할 수는 없지만 다음 highScore에 포인터는 저장할 수 없기 때문에 직렬화 할 수 없습니다. 포인터는 동적으로 할당되고 프로그램 수명 동안 만 유효하기 때문에 파일에 저장할 수 없습니다.
이 솔루션에 실망한 경우 heap 및 tree을 확인하면 몇 가지 (경우와 같이) 점수 이상에 대한 궁극적 인 효율성을 확인할 수 있습니다.
숙제입니까? – enobayram
아니, 그건 단지 나를위한거야. 나는 2 개월 전에 프로그래밍을 시작 했으므로 그런 식이면 저를 용서하십시오. 코드 또는 기타, 오른쪽 트랙의 포인터를 찾지 못했습니다. – karoma
링크드리스트에서 연습을 시작하려면 좋은 초보자 연습입니다. 주의 :'highScore'는 유효하지 않습니다.'struct highScore'가 필요합니다. –