데이터 구조: 조세 프 링 문제 (C 언어)

미리 말 하기:
학교의 교재 가 매우 엄밀 하지 않 아서 이 책 은 그래도 고 쳤 고, 최신 판 은 여전히 일련의 문제 가 있다.예 를 들 어 오늘 의 조세 프 링 문 제 는 인원수 와 순환 횟수 를 입력 합 니 다.나 는 코드 를 다 쓴 후에 책 에 있 는 순서 와 다르다 는 것 을 알 게 되 었 다. 나의 코드 를 보 니 많은 문제 가 없 는 것 같 았 다. 그래서 나 는 스스로 세 어 보 았 는데 책 에 있 는 답 이 과연 틀 렸 다 는 것 을 알 게 되 었 다.구체 적 인 교 재 는 어느 책 인지 말 하지 않 고 너무 추천 하지 않 습 니 다. 가장 많이 주 는 것 은 바로 생각 입 니 다. 교과서 의 코드 는 양 을 취하 면 됩 니 다. 가장 중요 한 것 은 당신 이 그 진정한 방법 을 이해 하 는 지 에 달 려 있 습 니 다.
조세 프 링 문제:
#include "stdio.h"
#include "stdlib.h"
struct student
{
	int num;
	int password;
	struct student *next;
};

struct student *CreateList();
void JosephusOperate(struct student *L,int m);

int main()
{
	int m;
	struct student *L;
	L=CreateList();
	scanf("%d",&m);
	JosephusOperate(L,m);
	return 0;
}

struct student *CreateList()
{
	int n,i;
	struct student *L,*pNew,*pCur=NULL;
	scanf("%d",&n);
	L=(struct student *)malloc(sizeof(struct student));
	pNew=(struct student *)malloc(sizeof(struct student));
	scanf("%d",&pNew->password);
	pNew->num=1;
	L=pNew;
	for(i=1;i<n;i++)
	{
		pCur=pNew;
		pNew=(struct student *)malloc(sizeof(struct student));
		scanf("%d",&pNew->password);
		pNew->num=i+1;
		pCur->next=pNew;
		pCur=pNew;
	}
	pCur->next=L;
	return L;
}

void JosephusOperate(struct student *L,int m)
{
	int i;
	struct student *pHead,*pMid,*pMid1,*pCur=NULL;
	pHead=L;
	pMid=L;
	while(pHead!=pCur)
	{
		for(i=1;i<19;i++)
		{
			pMid=pMid->next;
			pMid1=pMid->next;
		}
		printf(" %d    ,    %d
"
,pMid1->num,pMid1->password); pCur=pMid1->next; pMid->next=pMid1->next; pMid=pCur; free(pMid1); } }

이 코드 도 직접 써 서 완벽 하 게 만 들 지 못 했다.이것 은 좋 은 습관 이 아 닐 수도 있 지만 저 는 하드웨어 에 치 우 친 것 을 좋아 합 니 다. 만약 에 여러분 이 참고 할 필요 가 있다 면 여러분 들 은 진지 하 게 고 쳐 야 합 니 다. - -...그런데?결 과 는 그래도 옳 으 니 이 점 은 안심 해도 된다.

좋은 웹페이지 즐겨찾기