데이터 구조 실험 보고서 - 매트릭스 3 원 그룹, 전환 과 빠 른 전환

컴퓨터 실험 문제 의 컴퓨터 실험 요구 와 C 프로그램 디자인 을 규범화 하 는 것 은 비교적 강 한 이론 성 을 가 지 는 동시에 비교적 강 한 응용 성과 실천 성 을 가진다.온라인 실험 은 중요 한 교학 부분 이다.구체 적 인 실습 절 차 는 다음 과 같다. 1. 문제 분석 과 시스템 구조 디자인 은 문제 자 체 를 충분히 분석 하고 이해 하 며 무엇 을 요구 하 는 지 (어떻게 하 는 것 이 아니 라), 제한 조건 이 무엇 인지 파악 한다.데이터 구 조 를 중심 으로 하 는 원칙 에 따라 모듈 을 나 누 어 데이터 의 논리 구조 (선형 표 입 니까? 트 리 입 니까? 그림 입 니까?) 를 파악 하고 데이터 의 저장 구조 (순서 구조 입 니까? 링크 구조 입 니까?) 를 확정 합 니 다.그리고 조작 에 관 한 함 수 를 설계 합 니 다.모든 함수 모듈 에서 시스템 기능 을 종합 적 으로 고려 하여 시스템 구조 가 뚜렷 하고 합 리 적 이 며 간단 하 며 디 버 깅 하기 쉽 도록 해 야 한다.마지막 으로 각 모듈 의 알고리즘 헤드 와 규격 설명 을 쓰 고 모듈 간 의 호출 관 계 를 열거 하면 시스템 구조 설 계 를 완성 할 수 있다.3. 컴퓨터 에 접속 하여 C 언어 와 같은 고급 언어 용법 을 익 힐 준 비 를 한다.기계 (즉 운영 체제), 기본 적 인 상용 명령 을 숙지 하 다.정적 검 사 는 주로 두 가지 경로 가 있 는데 하 나 는 테스트 데이터 수 동 실행 프로그램 (또는 모듈 로 나 누 어 진행) 이다.둘째, 읽 거나 다른 사람 에 게 자신의 절 차 를 설명 함으로써 프로그램의 논 리 를 전면적으로 이해 하고 이 과정 에서 주석 과 단언 을 추가 하 는 것 이다.프로그램 에서 논리 적 개념 이 명확 하 다 면 후 자 는 전자 보다 효과 가 있 을 것 이다.4. 컴퓨터 디 버 깅 프로그램 디 버 깅 은 블록 으로 나 누 어 진행 하 는 것 이 가장 좋다. 아래 에서 위로, 즉 바 텀 함 수 를 먼저 디 버 깅 하고 필요 할 때 호출 드라이버 를 따로 쓸 수 있다. 표면적 인 번 거 로 운 작업 은 디 버 깅 할 때 직면 하 는 복잡성 을 크게 낮 추고 작업 효율 을 높 일 수 있다.5. 실습 보고 서 를 정리 하고 실제 상황 에서 시작 하기 전에 실험 데 이 터 를 충분히 준비 해 야 한다. 비행기 에서 실천 하 는 과정 에서 실험 데 이 터 를 신속하게 기록 하고 비행기 에서 실천 을 완성 한 후에 반드시 신속하게 정리 하고 분석 해 야 한다.실험 보고 서 를 작성 하 다.1. 실험 보고서 의 기본 적 인 요구: 일반성, 소 규모 의 탑승 실험 문 제 는 반드시 다음 과 같은 요 구 를 따라 야 한다.좋 은 습관 을 기르다.(1) 성명 학급 학 번 날짜 (2) 제목: 내용 서술 (3) 프로그램 목록 (필요 한 주석 포함) (4) 디 버 깅 보고서: 실험 자 는 반드시 이 부분 을 중시 해 야 한다. 그렇지 않 으 면 실험 임 무 를 완성 하지 못 한 것 과 같다.이곳 은 개인의 특색 이나 창조 적 사 고 를 나 타 낼 수 있다.구체 적 인 내용 은 테스트 데이터 와 운행 기록 을 포함한다.디 버 깅 에서 만난 주요 문 제 는 자신 이 어떻게 해결 하 는 지;경험 과 체험 등.2. 실험 학습 보고서 의 향상 요구: 단계 성, 비교적 큰 규모 의 탑승 실험 문 제 는 다음 과 같은 요 구 를 따라 야 한다.과학적 인 습관 을 기르다.(1) 수요 와 규격 은 문 제 를 설명 하고 문제 가 해결 해 야 할 문제 가 무엇 인지 약술 한다.소프트웨어 를 정 해서 무엇 을 합 니까?원제 조건 부족 시 보완.(2) 디자인 a. 디자인 사상: 저장 구조 (제목 에 한 정 된 설명).주요 산법 기본 사상.b. 디자인 표시: 각 함수 의 머리 와 규격 설명;모든 함수 가 호출 되 고 호출 된 함 수 를 보 여 줍 니 다. 호출 관계 도 를 통 해 표현 할 수 있 습 니 다.c. 주석 실현: 각종 기능 의 실현 정도, 기본 적 인 요 구 를 완성 하 는 토대 에서 어떤 기능 이 있 습 니까?(3) 사용자 매 뉴 얼: 즉 사용 설명.(4) 디 버 깅 보고서: 디 버 깅 과정 에서 발생 하 는 주요 문 제 는 어떻게 해결 합 니까?디자인 의 회고, 토론 과 분석;시간 복잡 도, 공간 복잡 도 분석;구상 개선;경험 과 체험 등.
편제 부서: 국토 자원 대학 편제 인: 심사 인: 편제 날짜: 2017 년 3 월 8 일 프로젝트 번호 No. C001 프로젝트 명칭 데이터 구조 훈련 대상 GIS 2015 급 7, 8 학 시 4 과정 명칭 데이터 구조 실험 교재 데이터 구조 (C 언어 판)
목적 Objective 1. 알고리즘 으로 프로 그래 밍 하 는 것 을 배 웁 니 다.희소 행렬 의 빠 른 전환 을 실현 하 는 첫 번 째 문제: 프로그램 코드 는 다음 과 같다.
 #include"stdio.h"    
#define    OK      1  
#define    ERROR   0  
#define    TRUE    1  
#define    FLASE   0  
typedef    int     Status;  
typedef    int     ElemType; 
#define MAX_SIZE 100 /*          */
 #define MAX_RC 20 /*      */
 typedef struct
 {
   int i,j; /*    ,   */
   ElemType e; /*      */
 }Triple; /*  c5-2.h */
 typedef struct
 {
   Triple data[MAX_SIZE+1]; /*        ,data[0]  */
   int rpos[MAX_RC+1]; /*              , c5-2.h    */
   int mu,nu,tu; /*      、        */
 }TSMatrix;


 Status CreateSMatrix(TSMatrix *M)
 { /*       M */
   int i,m,n;
   ElemType e;
   Status k;
   printf("        ,  ,     :");
   scanf_s("%d,%d,%d",&(*M).mu,&(*M).nu,&(*M).tu);
   if((*M).tu>MAX_SIZE)
     return ERROR;
   (*M).data[0].i=0; /*           */
   for(i=1;i<=(*M).tu;i++)
   {
     do
     {
       printf("         %d         (1~%d), (1~%d),   :",i,(*M).mu,(*M).nu);
       scanf("%d,%d,%d",&m,&n,&e);
       k=0;
       if(m<1||m>(*M).mu||n<1||n>(*M).nu) /*        */
         k=1;
       if(mi= =i&&p->j==j) /* p     , p           */
       {
         printf("%3d",p->e); /*   p      */
         p++; /* p       */
         k++; /*    +1 */
       }
       else /* p            */
         printf("%3d",0); /*   */
     printf("
"); } } void TransposeSMatrix(TSMatrix M,TSMatrix *T) { /* M T。 .1 */ int p,q,col; (*T).mu=M.nu; (*T).nu=M.mu; (*T).tu=M.tu; if((*T).tu) { q=1; for(col=1;col<=M.nu;++col) for(p=1;p<=M.tu;++p) if(M.data[p].j==col) { (*T).data[q].i=M.data[p].j; (*T).data[q].j=M.data[p].i; (*T).data[q].e=M.data[p].e; ++q; } } } Status FastTransposeSMatrix(TSMatrix M,TSMatrix &T) { T.mu=M.nu; T.nu=M.mu; T.tu=M.tu; if(T.tu) { int col; int num[100], cpot[100]; for(col=1;col<=M.nu;++col) num[col]=0; //num for(int t=1;t<=M.tu;++t) ++num[M.data[t].j]; // M cpot[1]=1; for(col=2;col<=M.nu;++col) cpot[col]=cpot[col-1]+num[col-1]; // cpot int q; for(int p=1;p<=M.tu;++p) { col=M.data[p].j; q=cpot[col]; T.data[q].i=M.data[p].j; T.data[q].j=M.data[p].i; T.data[q].e=M.data[p].e; ++cpot[col]; }//for }//if return OK; }//FastTransposeSMatrix void main() { TSMatrix A,B,C,T; printf(" A: "); CreateSMatrix(&A); PrintSMatrix(A); TransposeSMatrix(A,&C); printf(" C(A ):
"); PrintSMatrix1(C); FastTransposeSMatrix(A,T); printf(" T(A ):
"); PrintSMatrix1(T); }

좋은 웹페이지 즐겨찾기