xwhqsj 2015-09-13 03:24 采纳率: 50%
浏览 2121
已采纳

电话号码本算法问题中一人多号码问题的解决方案

设计一个电话号码本算法,要求人物有两个及以上的电话号码的情况的C语言代码实现

  • 写回答

4条回答 默认 最新

  • QIUSQJF 2015-09-13 04:58
    关注

    如果你不考虑可扩展性和内存的浪费问题,那么下面这个基本符合你的要求,注意:这里没有进行错误检测,和内存回收,这个自己可以稍加修改

     #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    typedef struct _CallBookMark
    {
        char name[30];  //名字
        char* telephone[10];    //电话号码,可存入10个,可根据需要添加或者减少 
        int count;  //当前存储多少个电话号码 
    }CallBookMark, *PCallBookMark;
    
    void Init(PCallBookMark contact, const char* name)  //初始化个人电话普,只存入姓名 
    {    
        strcpy(contact->name, name);                    
        contact->count = 0; 
    }
    
    void Insert(PCallBookMark contact, const char* callNumer)
    {
        unsigned int numlength = strlen(callNumer) + 1; //
        contact->telephone[contact->count] = (char*) malloc(numlength);
        strcpy(contact->telephone[contact->count++], callNumer);
    }
    
    void Display(PCallBookMark contact)
    {
        unsigned count = 0;
        printf("Name: %s\n", contact->name);
        while(count < contact->count)
        {
            printf("\t%s\n", contact->telephone[count++]);
        }
    }
    
    
    int main(void)
    {
        CallBookMark contact;
        Init(&contact, "王小二");
        Insert(&contact, "13123454435");
        Insert(&contact, "13123454123");        
        Insert(&contact, "13123454356");
        Display(&contact);
    
        return 0;               
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?