삽입 식 linux C 훈련 8 일 째

8883 단어 c공학 실습
프로젝트 개발 일 보고서
항목 이름
[소 모자이크 훈련 - 끼 워 넣 기 linux C 8 일 째]
오늘 진도 및 퀘 스 트
링크
오늘 퀘 스 트 완성 상황
  • 제목: 두 개의 학생 링크 를 만 들 고 이름, 연령 정 보 를 포함 하 며 하나의 링크 는 남학생 을 저장 하고 하나의 링크 는 여학생
  • 을 저장 합 니 다.
  • 제목: 위의 두 개의 링크 를 합 쳐 학생 의 연령 에 따라 순 위 를 매 겨 새로운 링크 를 합성 한다
  • .
  • 제목: 위의 문제 에 구 축 된 링크 를 반전 시 켜 나이 에 따라 역순 으로 배열
  • 제목: 위 에서 실 현 된 새로운 링크 에서 한 나 이 를 정 하고 해당 학생 의 나이 와 가장 가 까 운 학생 이름
  • 을 신속하게 찾 습 니 다.
    코드 는 다음 과 같 습 니 다:
    오늘 개발 에 나타 난 문제점 을 종합 하 다.
    없다
    금일 미 해결 문제
    없다
    금일 개발 수확
    c 언어 에 대한 이 해 를 강화 하고 링크 에 대한 이 해 를 강화 했다.
    기타
    없다
    코드:
    #include 
    #include 
    #include 
     
    #define MaxSize sizeof(char) * 20
    #define ERROR 1
    #define Succe 0
    
    struct students
    {
        char * name;
        char sex;
        int age;
        struct students *next;
    };
    typedef struct students Student;
    typedef Student * Stu;
     
    //      
    void Init(Stu *head)
    {
        *head = (Stu)malloc(sizeof(Student));
        (*head)->next = NULL;
    }
     
    //    
    void Insert(Stu newstudent,Stu *head)
    {
        Stu temp = *head;
        while(temp->next != NULL)
        {
            temp = temp->next;
        }
        temp->next = newstudent;
        newstudent->next = NULL;
    }
     
    //    
    int Rank(Stu *head)
    {
        int i;
        int j;
        int n;
        int count = 0;
        
        Stu p = *head;
        Stu	s = p->next;
        Stu	t = s->next;
     
    
        if(((*head)->next == NULL) || ((*head)->next->next == NULL))
        {
            return ERROR;
        }
        else
        {
    
            Stu temp = (*head)->next;
            while(temp != NULL)
            {
                count++;
    	    temp = temp->next;
            }
    	n = count - 1;
    	for(i = 0;i < n;i++)
    	{
    	    for(j = 0;j < (n - i);j++)
    	    {
    	        if(s->age > t->age)
    		{
    		    p->next = t;
    		    s->next = t->next;
    		    t->next = s;
    		    s = t;
    		    t = p->next->next;
    		}
    		t = t->next;
    		s = s->next;
    		p = p->next;
    	    }
    	    p = *head;
    	    s = p->next;
    	    t = s->next;
    	}
    	return Succe;
        }
    }
     
     
    //    
    
    int Reverse(Stu *head)
    {
        if(((*head)->next == NULL) || ((*head)->next->next == NULL))
        {
            return ERROR;
        }
        else
        {
            Stu p = (*head)->next;
            Stu s = p->next;
            Stu t = s->next;
    	while(t != NULL)
    	{
    	    s->next = p;
    	    p = s;
    	    s = t;
    	    t = t->next;
    	}
    	s->next = p;
    	(*head)->next->next = NULL;
    	(*head)->next = s;
    	return Succe;
        }
    
     }
     
    //      
    int Search(Stu *head,Stu *head1,int age)
    {
        int min;
        int MIN = 100;
        
        Stu temp = (*head)->next;
        Stu t = (*head)->next;
     
        if((*head)->next == NULL)
        {
            return ERROR;
        }
        else
        {
            while(temp != NULL)
    	{
                if(((temp->age) - age) >= 0)
    	    {
    	        min = (temp->age) - age;
    	    }
    	    else
    	    {
    	        min = age - (temp->age);
    	    }
    	    if(min <= MIN)
    	    {
    	        MIN = min;
    	    }
    	    temp = temp->next;
    	}
            printf("        %d  
    ",MIN); while(t != NULL) { if(((t->age) - age) >= 0) { min = (t->age) - age; } else { min = age - (t->age); } if(min == MIN) { Stu find_stu = (Stu)malloc(sizeof(Student)); find_stu->name = t->name; find_stu->sex = t->sex; find_stu->age = t->age; Insert(find_stu,&(*head1)); } t = t->next; } return Succe; } } // void display(Stu head,char sex) { Stu temp = head->next; printf("
    "); if(sex == 'a') { while(temp != NULL) { printf("%10s",temp->name); printf("%10c",temp->sex); printf("%10d
    ",temp->age); temp = temp->next; } } else { while(temp != NULL) { if(temp->sex == sex) { printf("%10s",temp->name); printf("%10c",temp->sex); printf("%10d
    ",temp->age); } temp = temp->next; } } } int main() { int i; int age; int num; int function; int count; int rank_result; int reverse_result; int search_result; Stu head; Init(&head); Stu head1; Init(&head1); Stu stu1 = (Stu)malloc(sizeof(Student)); stu1->name = "Zhangsan"; stu1->sex = 'b'; stu1->age = 20; Insert(stu1,&head); Stu stu2 = (Stu)malloc(sizeof(Student)); stu2->name = "Lisi"; stu2->sex = 'b'; stu2->age = 23; Insert(stu2,&head); Stu stu3 = (Stu)malloc(sizeof(Student)); stu3->name = "Wanger"; stu3->sex = 'b'; stu3->age = 22; Insert(stu3,&head); Stu stu4 = (Stu)malloc(sizeof(Student)); stu4->name = "HanMeimei"; stu4->sex = 'g'; stu4->age = 21; Insert(stu4,&head); Stu stu5 = (Stu)malloc(sizeof(Student)); stu5->name = "LiLei"; stu5->sex = 'g'; stu5->age = 24; Insert(stu5,&head); Stu stu6 = (Stu)malloc(sizeof(Student)); stu6->name = "ZhangHua"; stu6->sex = 'b'; stu6->age = 25; Insert(stu6,&head); while(1) { printf("** (1) **
    "); printf("** (2) **
    "); printf("** (3) **
    "); printf("** (4) **
    "); printf("** (5) **
    "); printf("** (0) **
    "); printf("*******************************
    "); printf("
    "); printf("
    "); scanf("%d",&function); switch(function) { case 1: { printf(" ?
    "); scanf("%d",&num); for(i = 0;i < num;i++) { Stu newstudent = (Stu)malloc(sizeof(Student)); newstudent->sex = 'b'; printf(" %d
    ",i + 1); newstudent->name = (char *)malloc(MaxSize); scanf("%s",(newstudent->name)); printf(" %d
    ",i + 1); scanf("%d",&(newstudent->age)); Insert(newstudent,&head); } printf("/********** **********/
    "); printf("
    "); display(head,'b'); printf("
    "); printf("
    "); printf("
    "); break; } case 2: { printf(" ?
    "); scanf("%d",&num); for(i = 0;i < num;i++) { Stu newstudent = (Stu)malloc(sizeof(Student)); newstudent->sex = 'g'; printf(" %d
    ",i + 1); newstudent->name = (char *)malloc(sizeof(char) * 20); scanf("%s",newstudent->name); printf(" %d
    ",i + 1); scanf("%d",&(newstudent->age)); Insert(newstudent,&head); } printf("/********** **********/
    "); printf("
    "); display(head,'g'); printf("
    "); printf("
    "); printf("
    "); break; } case 3: { printf("/******* ( )*******/
    "); printf("
    "); rank_result = Rank(&head); if(rank_result == ERROR) { printf(" !
    "); } if(rank_result == Succe) { display(head,'a'); } printf("
    "); printf("
    "); printf("
    "); break; } case 4: { printf("/********** **********/
    "); printf("
    "); reverse_result = Reverse(&head); if(reverse_result == ERROR) { printf(" !
    "); } if(reverse_result == Succe) { display(head,'a'); } printf("
    "); printf("
    "); printf("
    "); break; } case 5: { printf(" :
    "); scanf("%d",&age); printf("/********** **********/
    "); printf("
    "); search_result = Search(&head,&head1,age); if(search_result == ERROR) { printf(" !
    "); } printf("
    "); if(search_result == Succe) { display(head1,'a'); } head1->next = NULL; printf("
    "); printf("
    "); printf("
    "); break; } case 0: { return 0; } } } return 0; }

     

    좋은 웹페이지 즐겨찾기