데이터 구조 순서 표 의 응용 - 학생 정보 통계

실험 목적 :
1 、선형 표 의 정의 파악 하기;
2 、선형 표 의 기본 동작, 예 를 들 어 구축, 찾기, 삽입, 삭제 등 을 파악 합 니 다.
실험 내용:
학생 정보 (학 번, 이름, 성적) 를 포함 하 는 순서 표 와 링크 는 다음 과 같은 기능 을 가지 게 합 니 다.
(1) 지 정 된 학생 개수 에 따라 학생 정 보 를 하나씩 입력 합 니 다.
(2) 학생 표 에 있 는 모든 학생 의 관련 정 보 를 하나씩 표시 합 니 다.
(3) 이름 을 찾 아 이 학생 의 학 번 과 성적 을 되 돌려 줍 니 다.
(4) 지 정 된 위치 에 따라 해당 하 는 학생 정보 (학 번, 성명, 성적) 를 되 돌려 줄 수 있다.
(5) 학생 정 보 를 지정 하여 표 에 지정 한 위치 에 삽입 합 니 다.
(6) 지정 한 위치의 학생 기록 삭제 하기;
(7) 통계표 중 학생 개수.
 
참고 정보 :
Definition of structure student :
typedef struct {
    char no[8];   //8 학위
    char name[20]; // 성명.
    int price;     // 성적
}Student;
 
Definition of sequential list:
typedef  struct {
  Student  *elem;     // 데이터 요 소 를 가리 키 는 기본 주소
  int  length;       // 선형 표 의 현재 길이                                                           
 }SqList ;
         
Definition of linked list :
typedef struct LNode{
     Student   data;       // 데이터 필드
     struct LNode  *next;   // 포인터 영역
}LNode,*LinkList;  
 
 
실험 요구 :
(1) 프로그램 은 적당 한 주석 을 추가 하고 프로그램의 작성 은 사용 해 야 한다. 들 여 쓰기 형식 。
(2) 절 차 는 반드시 갖 추어 야 한다. 건장 성, 즉 입력 데이터 가 불법 일 때, 절차 도 적절하게 반응 할 수 있다. 삽입 삭제 시 지정 한 위치 가 잘못 되 었 습 니 다. 잠깐 만.
(3) 절차 인터페이스 가 우호 적 이 고 프로그램 이 실 행 될 때 사용 자 는 해당 하 는 알림 정보 에 따라 조작 할 수 있다.
#include
#include
#include
#include
#define OK 1
#define ERROR 0
#define OVERFLOW -2
typedef int Status;		//Status         ,           。
#define MAXSIZE 100	 
typedef struct
{
	char name[20];//   
	char no[10];//   
	double score;//   
}Student;
typedef Student ElemType;	
typedef struct
{
	ElemType *elem; //        
	int length;//    
}SqList;
void input(ElemType *e)//       
{
	printf("    
"); scanf("%s",e->no); printf("
"); scanf("%s",e->name); printf("
"); scanf("%lf",&e->score); } void output(ElemType *e)// { printf(" : %-10s, : %-20s, : %-10.2lf

", e->no, e->name, e->score); } Status InitList(SqList *L)// { L->elem=(ElemType*)malloc(sizeof(ElemType)*MAXSIZE);// MAXSIZE if(!L->elem) exit(OVERFLOW); // L->length=0; // 0 return OK; } int LocateElem(SqList *L,ElemType e)// { int i; for(i=0;ilength;i++) if(!strcmp(L->elem[i].name,e.name)) { return i+1; } return 0; } Status ListInsert(SqList *L,int i,ElemType e) // { int j; system("cls"); if(i<1||i>L->length+1)// { return ERROR; } if(L->length==MAXSIZE)// { return ERROR; } for(j=L->length-1;j>=i-1;j--) L->elem[j+1]=L->elem[j]; L->elem[i-1]=e; ++L->length;// return OK; } Status ListDelete(SqList *L,int j,char *e)// { if(j!=L->length&&j>0) { strcpy(e,L->elem[j].name); for(;j<=L->length;j++) L->elem[j-1]=L->elem[j]; } else// return ERROR; --L->length;// return OK; } int main() { int i,j,len,m,temp,a; char res[20]; ElemType e,b; SqList L; int n; printf("****** ******
");// printf("1. 。
"); printf("2. 。
"); printf("3. 。
"); printf("4. 。
"); printf("5. 。
"); printf("6. 。
"); printf("7. 。
"); printf("8. 。
"); printf("0. 。
"); n=-1; while(n!=0) { printf(" :
"); scanf("%d",&n); switch(n) { case 1: // if(InitList(&L)) printf("

"); else printf("

"); break; case 2: // printf(" (<100)
"); scanf("%d",&len); for(i=0;i

좋은 웹페이지 즐겨찾기