| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
#include <stdio.h> 
#include <stdlib.h> 
#include <malloc.h> 
#include <string.h>  
 
#define  OK        1 
#define  ERROR     0 
#define  OVERFLOW  -1 
 
typedef int    status; 
typedef char   CElemType; 
typedef int    ElemType; 
typedef struct Link 
{ 
    CElemType num[22]; //学号   
    CElemType name[20]; //姓名   
    CElemType phone[15]; //手机号 
    CElemType point[20]; //特征  
    CElemType role[10]; //角色   
    ElemType sex; //性别   
    ElemType age; //年龄   
    struct Link *next;   
}LinkList,*PLinkList;  
 
typedef struct MLink 
{   
    CElemType ST[20]; //社团名字   
    ElemType len; //社团人数   
    ElemType maxlen; //社团最大人数   
    struct MLink *next;          
}MLinkList,*MPLinkList;   
 
void menu() //主页面                 
{   
    printf("................    主菜单     ................\n");   
    printf("................ 1.新成员入社  ................\n");   
    printf("................ 2.老成员退社  ................\n");   
    printf("................ 3.成员查询    ................\n");   
    printf("................ 4.两个社团并社................\n"); 
        printf("................ 5.输入社团信息................\n"); 
    printf("................ 0.退出        ................\n");   
} //menu 
 
void ST(MPLinkList &L)   //输入社团信息  
{   
        printf("...............输入社团信息..............\n"); 
        printf(" 社团名字    当前成员人数     最大人数\n"); 
    scanf("%s %d %d",L->ST,&L->len,&L->maxlen);   
} //ST   
 
void Insert(MPLinkList &L) //新成员入社 
{ 
        printf(".......................输入成员信息.....................\n"); 
        printf("学号    姓名    手机号    特征    角色    性别(0:女 1:男)    年龄\n"); 
        PLinklist q; 
        q=(PLinklist)malloc(sizeof(Linklist)); 
        q->next=NULL; 
        scanf("%s %s %s %s %s %d %d",p->num,p->name,p->phone,p->Point,p->role,&p->sex,&p->age);   
    q->next=L->next;   
    L->next=q;   
    L->len++;   
} //Insert 
 
void Delete(MPLinkList &L) //老成员退社   
{   
        printf("................输入学号................\n");  
    char a[20];   
    scanf("%s",a);   
    PLinkList q,p;   
    q=p=L->next;   
    while(p->next!=NULL)    
        if(!strcmp(p->next->num,a))    
            break;  
    if(q==p)    
        L->next=NULL;     
    else if(q->next==p||q->next!=NULL)     
        q->next->next=p->next;     
    free(p);   
    L->len--;   
} //Delete   
 
void show(MPLinkList &L)//成员展示   
{   
        printf("学号   姓名   手机号   特征   角色   性别(0:女 1:男)   年龄\n");   
    PLinkList q;   
    q=L->next;   
    while(q!=NULL)   
    {   
        printf("%s %s %s %s %s %d %d\n",q->num,q->name,q->phone,q->Point,q->role,q->sex,q->age);   
        q=q->next;   
    }   
} //show  
 
void Init(MPLinkList &A,MPLinkList &B)  //初始化表  
{   
    B->len=A->len=0;   
    B->maxlen=A->maxlen=0;   
    strcpy(B->ST," ");   
    strcpy(A->ST," ");   
    A->next=NULL;   
    B->next=NULL;   
}  //Init 
   
void combine(MPLinkList &A,MPLinkList &B) //两个社团合并   
{   
        printf(".................合并................\n");   
    A->len=A->len+B->len;   
    A->maxlen=A->maxlen+B->maxlen;   
    printf("输入社名\n");   
    scanf("%s",A->ST);   
    PLinkList q;   
    q=A->next;   
    while(q!=NULL&&q->next!=NULL)   
        q=q->next;   
    if(A->next==NULL)   
        A->next=B->next;   
    else   
        q->next=B->next;   
    free(B);   
}  //combine 
 
int main()     //主函数   
{   
        int n; 
    MPLinkList A,B;   
    B=A=(MPLinkList)malloc(sizeof(MLinkList));   
    Init(A,B);   
    menu();    
    printf("请输入数字\n");   
    while(scanf("%d",&n)!=EOF&&n>=0&&n<=5)   
    {   
        switch(n)   
        {   
        case 1:   
            {      
                Insert(A); //新成员加入 
                break;   
            }   
        case 2:   
            {           
                Delete(A);  //老成员退出 
                break;   
            }   
        case 3:   
            {                
                show(A); //显示成员 
                break;   
            }   
        case 4:   
            {    
                combine(A,B); //合并   
                break;   
            }   
                case 5: 
                        { 
                                ST(A); 
                                break; 
                        } 
        case 0:   
            {   
                exit(OK); //退出   
            }   
        }   
    }   
    return 0;   
}   
   |   
 
 
 
 |