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

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

4个回答

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

 #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;               
}

用链表,创建一个数组,数组存储人,然后指向一个号码链表,号码链表存储此人对应的号码

xwhqsj
xwhqsj 能具体点吗?C语言怎么实现,若是在创建一个号码链表会不会很麻烦?
大约 4 年之前 回复

楼上的解决方案 很好了,但是如果楼主只是实现 的玩玩 的话,嫌弃链表复杂,可以试试
全部用 自定义类型数组
就是你自己定义一个 类型 里面有 姓名 号码 号码 用 字符 数组存储 且 这个数组的大小设置成你允许的最大号码数N*13+1
号码数组+1 是留下一个标志位。
这样做 很浪费 内存

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
电话号码本
设计一个能够实现基本功能包括增加数据、更新数据、查询数据、删除数据以及重组文件,用函数实现这些功能,通过选择菜单调用函数来实现相应的功能。
电话号码本(通讯录)
1.程序能够建立一个可存放30条以上记录的电话本。 2.程序能够对记录进行增加、删除、修改操作。 3.能够通过姓名或者电话查询记录并显示查询结果。
汇编语言程序设计——电话号码本
此课题要求用汇编语言写一个可存放30条以上记录的电话号码本的程序,其中每一个记录应该包括四个选项,即序号,电话号码,姓名用地址。对程序中的所有记录能够进行的操作有增加一条记录,删除一条记录,查询一条记录,修改一条记录。增加一条记录就是把记录插入到程序中所有记录的最后面,还要把记录的总个数加1。删除一记录要先通过查询算法,查找到删除记录的位置,然后从下一条记录开始,逐个往前面覆盖。查询一条记录有两种方法,通过电话号码或姓名查询,若没有找到所要找的记录,则返回,并告之该记录不存在。修改一条记录也需要先查找该记录,然后进行修改,即重新写入。
电话号码本c++代码
华为14年初试第三轮竞赛题,vs2010编译运行通过,分享给需要的朋友
J2ME读取电话号码本内容
J2ME读取本地电话号码本和SIM卡号码本。可以读取一个人的多个电话,还可以读取地址,公司等信息。也可以选取读多个人的信息。。很简陋。。为了自己NFC项目写的测试。。有用的可以看看。。
用汇编语言编写的电话号码本
用汇编语言编写的电话号码本,能实现编辑,删除,排列等功能
电话号码本的编辑和查找程序
用汇编语言写的一个简单电话本的程序,是我们课程设计的题目。
查找电话号码本汇编实现
(1) 要求程序建立一个可存放50项的电话号码表,每项包括人名(20个字符)及电话号码(8个字符)两部分; (2) 程序可接收输入人名及对应的电话号码,并把它们加入电话号码表中; (3) 凡有新的输入后,程序应该按人名对电话号码表重新排序 (4) 程序可接收需要查找电话号码的人名,并从电话号码表中查出其电话号码,再在屏幕上以如下格式显示出来。Name tel.
电话号码本编辑和查找程序的设计与实现
电话号码本编辑和查找程序的设计与实现,课程设计报告书
请教使用at命令获得电话号码本
大家好,,请教1个问题,如何使用AT命令来读手机上存的电话号码本,具体格式是什么,我的QQ:79110201,Email:asdfg6917@sina.com
如何读/写中文电话号码本?
串口连接TC35模块,用AT+CPBR只能读出英文的姓名,中文姓名则没有显示,写入时情况一样,怎么办?
牛客网-电话分身号码
 电话分身号码 //第一次做错的原因是没有读清晰题目,题目会将字符串打乱;第二次错在string.replace上,这个是替换所有出现在string里面的char //最后题目分析的还不错  import java.util.*; public class Main { public static void main(String args[]){ Scanner i...
如何将电话区号,号码组成的号码中匹配搜索的号码?
字段:rnTelArea,Tel1,tel2,mb rnrnTelarea代表区号,tel1,tel2分别代表号码一,号码2不含区号,mb代表手机,如何根据电话号码完全匹配号码呢? 不是模糊查询rn
约瑟夫问题的算法解决方案
约瑟夫问题的算法解决方案,利用循环链表解决这个问题
查找号码归属地问题,求解决方案
题目要求:有大量(几千万条级别)的号码段(或单一号码)对应地址的数据,如rn130123--130129 成都rn1301241--1301250 重庆rn13012510001 成都rn……rn请编程实现rn1.输入任一号码,查找对应的地址,如没有提示未找到rn2.号段数据的动态增加和删除rn3.说出自己算法的时间复杂度和空间复杂度rn
广铁集团(广州)电话订票号码
广铁集团(广州)电话订票号码 — 唯一官方电话--订票渠道 订票----电话:020-95105105 / 96020088  客服--电话:020-12306   
怎样得到电话的来电号码?
做了一个CRM系统,现在想和电话机联系起来.rnrn实现.客户拨电话过来时,能把CRM里已经存在的客户记录调出来.rnrn请问怎么做?
电话 号码归属地,运营商
电话 号码归属地,运营商 电信,移动,联通 号码 归属地数据库, 包括2016以前的号码段 不包括最新的 147,179 等号码段
号码问题
我这里有一个手机号码表,需要对号码的最后四位进行处理,凡是满足rn后四位为这种类型的都删除:rnAAAArnABABrnAABBrnBBAArnBABArnAAABrnBBBArnABBBrnBAAArn我有个笨办法,但是想寻求个高效的,谢谢
电话问题!
事先声明,我第一次从事电话交换机的维护工作,所以提问可能有些语无伦次,请各位耐心询问解答。谢谢:rnrn公司的每一台电话都有一个内线号码(比如705),和一个外线号码(市内电话号码)。具体怎么架构的我不懂,但是今天有个电话出现了这样的问题,拨打这个电话的内线号码,它就会铃响,但拨打这个电话的外线号码,就不响了。纳闷,请问如何解决?谢谢。
发一个最近写的手机电话号码本的源码,大家提意见!
模仿王森的电子书写的一个手机电话号码本功能。。。。rn有增加、删除、查看功能,刚学习J2ME不久,希望大家多提意见。。也希望大家共同提高rnrn--------------------------------------rnimport javax.microedition.lcdui.*;rnimport javax.microedition.midlet.*;rnimport javax.microedition.rms.*;rnrnimport java.io.*;rnrnpublic class TestTwentyThree extends MIDlet implements CommandListenerrn private Display display;rn private String current = null; rn int[] recordes;rn String dbname = "dressbook";rn Form addform = new Form("增加资料");rn TextField tfname = new TextField("姓名:","",20,TextField.ANY);rn TextField tftel = new TextField("电话:","",20,TextField.PHONENUMBER);rn rn public TestTwentyThree()rn display = Display.getDisplay(this);rn rn public void startApp()rn //必须先初始化,不能放到addForm中再初始化。rn Command add = new Command("确定",Command.OK,1);rn Command back= new Command("返回",Command.BACK,3);rn addform.append(tfname);rn addform.append(tftel);rn addform.addCommand(add);rn addform.addCommand(back);rn addform.setCommandListener(this);rn mainForm();rn rn public void pauseApp()rn public void destroyApp(boolean unconditional)rn public void commandAction(Command c,Displayable d) rn if(c == List.SELECT_COMMAND && current.equals("mainForm"))rn List temp = (List) d;rn switch (temp.getSelectedIndex())rn case 0:rn searchData();rn break;rn case 1:rn addForm();rn break;rn case 2:rn delForm();rn break;rn rn rn if(current.equals("addForm"))rn if (c.getLabel().equals("确定")) addData();rn if (c.getLabel().equals("返回")) mainForm();rn rn if(current.equals("listallForm"))rn if(c.getLabel().equals("返回")) mainForm();rn rnrn if(current.equals("delForm"))rn if(c.getLabel().equals("返回")) mainForm();rn if(c.getLabel().equals("删除")) rn List temp = (List) d;rn deleteData(temp.getSelectedIndex());rn delForm();rn rn rn rn rn //主操作界面rn public void mainForm()rn current = "mainForm";rn List l = new List("我的电话本",Choice.IMPLICIT);rn l.append("查找",null);rn l.append("增加",null);rn l.append("删除",null);rn l.append("分组信息",null);rn l.append("存储状况",null);rn l.setCommandListener(this);rn display.setCurrent(l);rn rn //增加电话号码界面rn public void addForm()rn current = "addForm";rn display.setCurrent(addform); rn rn //删除电话界面rn public void delForm()rn current = "delForm";rn List flist = new List("删除电话:",Choice.EXCLUSIVE); rn Command confirm = new Command("删除",Command.SCREEN,1);rn Command back = new Command("返回",Command.BACK,2);rn flist.addCommand(confirm);rn flist.addCommand(back);rn flist.setCommandListener(this);rn listData(flist);rn rn //查找数据rn public void searchData()rn List flist = new List("电话列表:",Choice.EXCLUSIVE);rn current = "listallForm";rn Command back = new Command("返回",Command.SCREEN,1);rn flist.addCommand(back);rn flist.setCommandListener(this);rn listData(flist);rn rn //增加数据 rn public void addData()rn //如果输入为空,则提示出错!rn if(tfname.getString().trim().equals("")||tftel.getString().equals(""))rn Alert al = new Alert("Input null");rn al.setType(AlertType.ERROR);rn al.setString("输入不能为空!");rn al.setTimeout(1500);rn display.setCurrent(al);rn return;rn rn outinData data = new outinData();rn data.name = tfname.getString();rn data.tel = tftel.getString();rn RecordStore rs = openRs(dbname);rn byte[] temp = data.encode();rn if(rs==null)rn System.out.println("When Add Data,open Rs error!");rn elsern tryrn rs.addRecord(temp,0,temp.length);rn rs.closeRecordStore();rn //deleteRs(dbname);rn Alert al = new Alert("Add Record");rn al.setType(AlertType.INFO);rn al.setString("添加成功!");rn al.setTimeout(1500);rn display.setCurrent(al);rn catch(Exception e)System.out.println("Add data error");rn rn rn //电话列表rn public void listData(List flist)rn RecordStore rs = openRs(dbname);rn if(rs==null)rn System.out.println("When list Data,openRs error!");rn elsern tryrn RecordEnumeration re = rs.enumerateRecords(null,null,false);rn outinData data = new outinData();rn int totalrecords = re.numRecords();rn if(totalrecords==0)rn flist.append("没有资料!",null);rn display.setCurrent(flist);rn return;rn rn //把recordid读入数组 rn recordes = new int[totalrecords];rn for(int i = 0;i32)rn return false;rn rn tryrn RecordStore.deleteRecordStore(rsname);rn catch(Exception e)rn System.out.println("deleteRs error:"+e.getMessage());rn return false;rn rn return true;rn rnrn//按照rms要求的格式读出和写入数据rnclass outinData rn String name = null;rn String tel = null; rn public void decode(byte[] data)rn tryrn ByteArrayInputStream bis = new ByteArrayInputStream(data);rn DataInputStream dis = new DataInputStream(bis);rn name = dis.readUTF();rn tel = dis.readUTF();rn bis.close();rn dis.close();rn catch(Exception e)System.out.println("decode error:"+e.getMessage());rn rn public byte[] encode()rn byte[] result = null;rn tryrn ByteArrayOutputStream bos = new ByteArrayOutputStream();rn DataOutputStream dos = new DataOutputStream(bos);rn dos.writeUTF(name);rn dos.writeUTF(tel);rn result = bos.toByteArray();rn bos.close();rn dos.close();rn catch(Exception e)rn System.out.println("encode error:"+e.getMessage());rn return null;rn rn return result;rn rnrnrn-------------------------------------------
一个有关MODEM接收对方电话按键号码的问题
有谁知道如何正确接收语音提示后的按键号码?如联通的1001,拨0可转人工.
电话客服系统解决方案
开发环境列表 主要功能模块列表 电话录音功能模块子功能列表 客户关系管理功能模块子功能列表 系统管理功能模块子功能列表
这里人多,提个ADO的问题
请问用_RecordsetPtr的哪个方法,可以返回字段名rn如 姓名 生日 学历rn 小王 1982 大专rn 小李 1981 本科rn我要得到"姓名,生日,学历"???
这边人多,问个虚拟机的问题。
我现在要在虚拟机中启动XP的DEBUG模式。rn虚拟XP系统的boot.ini文件已经设置OK了。rn可是在选择DEBUG XP时提示。rnrnA virtual CPU has entered the shutdown state. This would have caused a physical machine to restart. This can be caused by an incorrect configuration of the virtual machine, a bug in the operating system or a problem in the VMware Workstation software. Press OK to restart the virtual machine or Cancel to power off the virtual machine.rnrnDEBUG模式始终进不去,谁有这方面的经验能帮忙解决下?rn请版主放行~~因为这问题确实没找到地方问,咱这板块相对人还挺多的就来这问了。
汇编课程设计_电话号码本编辑和查找程序的设计与实现
1) 建立一个可存放50项的电话号码表,每项包括人名及电话号码两部分; 2) 程序可接受输入人名及相应的电话号码,并将他们加入电话号码表中; 3) 凡有新的输入后,程序应按人名对电话号码表重新排序; 4) 程序可接受需要查找电话号码的人名,并从电话号码表中查出其电话号码,并显示出来。 5) 程序采用子程序结构,结构清晰; 6) 友好清晰的用户界面,能识别输入错误并控制错误的修改。
c语言 链表 电话号码本 附c源代码
c语言写的电话号码本程 用与 链表的学习,含创建,排序,删除 ,插入 等多中操作 可到出到文本等操作
哈希表c++实现电话号码本,主函数有问题,请指正谢谢
以下是我全部的函数,在最下面的[color=#FF0000]主函数[/color]有问题,请看[color=#FF0000]主函数和类的定义[/color]。现在报错是主函数中key ,value不是类hashtable的成员。这个地方和我定义的两个类冲突了但是不知道怎么改。rn文本文件是:rn3 // 文件中有多少个人的信息确定循环的次数 主函数中的size先把3 读进来rnJoe 123456 // 每一条信息都是 人名 号码(中间有空格) record 读这两个部分存进来 然后object访问类实现rnMark 123987 // 类方法定义的是int型变量,读人名的时候不知道能不能读成ASC码读进来rnLily 456789 //谢谢rnrnrnrnrnrnrn#include rn#include rn#include rn#include rn#include rn#include rn#define tablesize 100rnrnusing namespace std;rnrnrnclass Elementrnpublic:rn int key;rn int value;rn bool status;rnrn;rnclass hashtablernpublic:rn hashtable(int n);rn ~hashtable();rn int datasize;rn friend class Element ;rn Element *elem;rn int hash(int n);rn int search(int key);rn void insert(int key, int val);rn void display();rn void remove(int key);rn;rnhashtable::hashtable(int n )rn Element *elem = new Element();rn int i;rn datasize=0;rn for(i=0; i> size;rn for(i=0;i> record[i].key;rn cin >> record[i].value;rn rn rnrn cout<<"Please enter display, remove name, search name,insert, seperated by spase"<>input;rn if(input=="insert")rn for(i=0;iinsert(record[i].key,record[i].value);rn rn rn else if(input =="search")rn cin >> item;rn object->search(item);rn rn else if(input=="remove")rn cin>>item; rn object->remove(item);rn rn rn else if(input=="display")rn object->display();rn rn rn rn
通讯录号码本c++
C++ 简单通讯录电话簿例子,C++代码风格。 详细源代码
ASP中一棘手问题
我用VC6的安装光盘安装完Microsoft visual interDev 启动后,点击File New Project,在出现的New Project对话框中为何没有 Visual InterDev Projects这一项,而只有Visual Studio这一个文件夹.我打开Tools菜单下的Options,弹出Options对话框后,点击里边的Projects时,右边出提示:Error Loading Property Page.这是怎么回事呀rn
网络编程中一简单问题
发送给远程主机的请求内容串rnstring sendStr="GET/HTTP/1.1\r\nHost:"+hostName+"\r\nConnection: Close\r\n\r\n";rn没看懂什么意思rn请教各位
asp.net中一readline()问题!
以下代码中,在倒数第6行,既然是在判断了line后,再用objWriter.WriteLine(Line)写入,为什么还要在后面加 Line=objReader.ReadLine()一句? 这个我有点不懂~~rn请路过的朋友指点一下,感激不尽~~rnrn<%@ Import Namespace="System" %>rn<%@ Import Namespace="System.IO" %>rn
C中一些小问题
(1)在C语言中,合法的字符常量是:__rn A.'\084' B.'\x43' C.'ab' D."\0"rnrn(2)char x[]="abcdefg";char y[]='a','b','c','d','e','f','g';则正确的叙述为:__rn A.数组x和y等价 B.数组x和y长度相同 C.数组x的长度大于y的长度 D.数组x的长度小于y的长度rnrn(3)char a[]="12345",则系统自动将数组定义为:__rn A.a[5] B.a[6] C.a[7] D.a[4]rnrn(4)整型变量x和y的值相等,且为非0,则以下选项中,结果为零的表达式是__rn A.x||y B.x|y C.x&y D.x^yrnrn(5)以下程序段: int k=0;rn while(k=1) k++; //是k=1; rn 则while循环执行的次数是__rn A.无限次 B.语法错,不能执行 C.一次也不执行 D.执行1次rnrn(6)以下叙述正确的是__rn A.C语言编译时不检查语法rn B.C语言的子程序有过程和函数两种rn C.C语言的函数可以嵌套定义rn D.C语言所有函数都是外部函数rnrn(7)以下程序的运行结果是:rnint a,b;rnvoid fun()rna=100;b=200;rnmain()rnint a=5,b=7;rn fun();rn printf("%d %d",a,b);rnrnrn(8)以下程序的运行结果是:rn#define A(x,y) x*yrnmain()rnint a=1,b=2,c=3;rnprintf("%d",A(a+b,b+c));rnrnrnrn会的朋友指教下,请给出答案并解释,最重要的是解释啊....先说声谢了.....
asp.net中一问题,急救!
我现在用一个dataset绑定到datagrid中,load时绑定,但我需要操作:删除某些行,然后加入某些行,但是在update数据集时,出现如下错误:Deleted row information cannot be accessed through the rowrn数据无法更新。rn不知道怎么弄了,大家帮忙啊!rn我用的是vb
安卓开发中一些小问题
打包签名中的问题在使用jdk1.7及以上进行安卓app打包签名时,提交百度应用市场提示SHA错误,应该设置如下:jarsigner -verbose -keystore [keystore文件,如my.keystore] -digestalg SHA1 -sigalg MD5withRSA -signedjar [目标文件,带后缀] [源文件,带后缀] 'keystore别名'对于jdkjdk1.
号码归属地识别-Android电话应用
题记自研的电话应用中,有两处使用了号码归属地,一处是通话记录页,一处是通话界面;那么它们是如何实现的呢?下面进行一步一步的分析。Dialer使用号码归属地 通话记录页的号码归属地 通过查询calls表中的Calls.GEOCODED_LOCATION字段,来进行获取号码的归属地。 相关代码如下: 查询:startQuery(token, null, uri, CallLogQuery._PROJ
如何利用单片机取得电话来电号码?
如题。
江苏省电话查询号码是多少啊!!!!!!!!!
江苏省电话查询号码是多少啊!!!!!!!!!
如何获得上网电话的号码??可能吗??
一台计算机用MODEM通过电话线拨号上网,我能够获得它的IP,请问我是否能用技术手段或什么工具知道它的电话号码? rn
如何获得上网电话的号码??可能吗?
我和一位MM通过QQ聊天,她是用MODEM通过电话线拨号上网,我能够获得她的IP,请问我是否能用技术手段或什么工具知道她的电话?因为我想和她通话,可是她不告诉我电话号码。rnrn
相关热词 c# 线程结束时执行 c# kb mb 图片 c# 替换第几位字符 c#项目决定成败 c# 与matlab c# xml缩进 c#传感器基础 c#操作wps c# md5使用方法 c# 引用父窗口的组件