| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
#include<stdio.h> 
#include<malloc.h> 
#include<stdlib.h> 
#include<string.h> 
int y=0; 
typedef struct student 
{ 
        char name[20]; 
        char number[20]; 
        int score; 
        struct student *next; 
}STU; 
/*int lenth(STU **head) 
{ 
        int k=0; 
        STU *stu1; 
        stu1=*head; 
        while(stu1!=NULL) 
        { 
                stu1=stu1->next; 
                k++; 
        } 
        printf("%d",k); 
        return k; 
}*/ 
void insert(STU *head) 
{ 
        STU *stu1,*s; 
        stu1=head; 
        int i,k; 
        s=(STU *)malloc(sizeof(STU)); 
        printf("请问你要在哪里插入?"); 
        scanf("%d",&i); 
        if(i>y||i<=0) 
        { 
                printf("插入位置出错!"); 
        } 
        else 
        { 
                printf("请输入姓名"); 
        scanf("%s",s->name); 
        printf("请输入学号"); 
        scanf("%s",s->number); 
        printf("请输入分数"); 
        scanf("%d",&s->score); 
        if(i==1) 
        { 
                s->next=stu1; 
                s=head; 
                printf("插入完成"); 
        } 
        else{ 
                for(k=1;k!=i;k++) 
                { 
                        stu1=stu1->next; 
                } 
                s->next=stu1->next; 
                stu1->next=s; 
                y++; 
                printf("插入完成!"); 
        } 
        } 
} 
void remove(STU *head) 
{ 
        STU *stu,*r,*e; 
        stu=head; 
        int i,k; 
        printf("你要删除哪一个?(输入他的位置)"); 
        scanf("%d",&i); 
        if(i<=0||i>y) 
        { 
                printf("删除位置有错!"); 
        } 
        else 
        { 
                for(k=1;stu->next!=NULL&&k!=i;k++) 
                { 
                        stu=stu->next; 
                } 
                r=stu->next; 
                stu->next=r->next; 
                e=r; 
                free(e); 
                y--; 
        } 
} 
void seek(STU *head) 
{ 
        char number1[20]; 
        printf("请输入你要查找的学号:"); 
        scanf("%s",number1); 
        STU *stu;; 
        stu=head; 
        while(stu!=NULL) 
        { 
                if(strcmp(stu->number,number1)!=0) 
                { 
                        stu=stu->next; 
                } 
                else 
                { 
                        printf("你要查找的人的姓名是%s\n",stu->name); 
                        printf("这个人的学号是%s\n",stu->number); 
                        printf("这个人的成绩是%d\n",stu->score); 
                        break; 
                } 
        } 
} 
void getInput(STU *stu) 
{ 
        printf("请输入姓名"); 
        scanf("%s",stu->name); 
        printf("请输入学号"); 
        scanf("%s",stu->number); 
        printf("请输入分数"); 
        scanf("%d",&stu->score); 
        y++; 
} 
void add(STU **head) 
{ 
        STU *stu,*temp; 
        stu=(STU *)(malloc(sizeof(STU))); 
        if(stu==NULL) 
        { 
                printf("失败!"); 
                exit(1); 
        } 
        getInput(stu); 
        if(*head!=NULL) 
        { 
                temp=*head; 
                *head=stu; 
                stu->next=temp; 
        } 
        else 
        { 
                *head=stu; 
                stu=stu->next; 
        } 
} 
void print(STU *head) 
{ 
        STU *stu; 
        stu=head; 
        while(stu!=NULL) 
        { 
                printf("姓名:%s\n",stu->name); 
                printf("学号:%s\n",stu->number); 
                printf("分数:%d\n",stu->score); 
                stu=stu->next; 
        } 
} 
void quit(STU *head) 
{ 
        STU *stu,*temp; 
        stu=head; 
        while(stu!=NULL) 
        { 
                temp=stu; 
                stu=stu->next; 
                free(temp); 
        } 
} 
int main() 
{ 
        int i=0; 
        STU *head; 
        while(i<16) 
        { 
                printf("*"); 
                printf("-"); 
                i++; 
        } 
        printf("我有以下操作!\n"); 
        printf("\t输入一个学生的信息(1)\t"); 
        printf("插入某一学生的信息(2)\n"); 
        printf("\t删除某一学生的信息(3)\t"); 
        printf("查找某个学生的信息(按学号)(4)\n"); 
        printf("\t打印(5)\t"); 
        printf("退出(6)\n"); 
        while(i!=6) 
        { 
                printf("你要进行什么操作?"); 
                scanf("%d",&i); 
        switch(i) 
        { 
        case 1:add(&head);break; 
        case 2:insert(head);break; 
        case 3:remove(head);break; 
        case 4:seek(head);break; 
        case 5:print(head);break; 
        case 6:quit(head);break; 
        } 
        } 
        return 0; 
} 
 
 
 
//说实话,感觉我这个一大堆的错啊,但是还是可以运行的,比如,插入功能,我先输入了两个学生的信息,当我再插入一个学生信息的时候,我选择插入位置再第一个位置,就会插入失败(就是没有插入进去),但是我选择插入在第二个位置的时候又插入进去的,这个程序给我的感觉就是,我让他插入,删除,某些位置,它会找不到,我给它的位置。大佬,求救! |   
 
 
 
 |